Buena noche comunidad e elhacker... cargo un codigo en este for para preguntar como puedo complementar este codigo para que sea recursivo y encuentre la altura de un arbol... agradecería muccho su información . ...
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct nodoarbol{ //ESTRUCTURA DEL ARBOL
struct nodoarbol *izqnodo;
int info;
struct nodoarbol *dernodo;
};
typedef struct nodoarbol NODO; //DEFINICION DE TIPO NODO
typedef NODO *ARBOL; //DECLARACION DE VARIABLE PUNTERO A NODO
/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
void insertanodonuevo(ARBOL *,int); //DECLARACION DE FUNCIONES
void inorden(ARBOL);
void preorden(ARBOL);
void postorden(ARBOL);
void treefree(ARBOL);
/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
/*-----------------------<FUNCION PRINCIPAL>--------------------------------*/
main(){
int i;
char newnod,chain[200],elementos;
ARBOL raiz=NULL;
printf("\n\n\t\t INGRESE DATOS PARA CREAR ARBOL BINARIO: \n"); //MAXIMO DE CARACTERES 200
printf("\n\t\t"); gets(chain);
elementos=strlen(chain);
for(i=1;i<=elementos;i++) {
newnod=chain[i-1];
insertanodonuevo(&raiz,newnod);
}
printf("\n\n preorden ¯¯\t");
preorden(raiz);
printf("\n\n inorden ¯¯\t");
inorden(raiz);
printf("\n\n postorden ¯¯\t");
postorden(raiz); //LLAMADO A FUNCION DE RECORRIDO EN POSTORDEN
getch();
treefree(raiz);
raiz=NULL;
return 0;
}
void insertanodonuevo(ARBOL *rarbol,int nuevo){
if(*rarbol==NULL){
*rarbol=(NODO *)malloc(sizeof(NODO));
if(*rarbol!=NULL){
(*rarbol)->info=nuevo;
(*rarbol)->izqnodo =NULL;
(*rarbol)->dernodo=NULL;
}
else{printf("\n Memoria No Disponible !!!!\n");}
}
else
if(nuevo<(*rarbol)->info)
insertanodonuevo(&((*rarbol)->izqnodo),nuevo);
else
if(nuevo>(*rarbol)->info)
insertanodonuevo(&((*rarbol)->dernodo),nuevo);
}
void preorden(ARBOL rarbol){
if(rarbol!=NULL){
printf(" %c ",rarbol->info);
preorden(rarbol->izqnodo);
preorden(rarbol->dernodo);
}
}
void inorden(ARBOL rarbol){
if(rarbol!=NULL){
inorden(rarbol->izqnodo);
printf(" %c ",rarbol->info);
inorden(rarbol->dernodo);
}
}
void postorden(ARBOL rarbol){
if(rarbol!=NULL){
postorden(rarbol->izqnodo);
postorden(rarbol->dernodo);
printf(" %c ",rarbol->info);
}
}
void treefree(ARBOL rarbol){
if(rarbol!=NULL){
treefree(rarbol->izqnodo);
treefree(rarbol->dernodo);
free(rarbol);
}
}
:-( :laugh:
La altura de un arbol? mmm.. no entiendo el contexto que lo nesecita, pero para calcular la altura de cualquier cosa puedes usar el seno de la funcion dependiendo de el angulo que forma una linea imaginaria con la sombra
xDDDDDDD
¡Buenas!
Es muy facil. Tendras que tener una funcion que reciba un puntero a arbol. Si el puntero es nulo devuelve 0, sino devolveras 1 + maximo de las alturas de las ramas izquierda y derecha. (Si, creo que si). La implementacion te toca a ti.
¡Saludos!
Podría alguien ayudarme a como hacer esa función ya implementada, pues ya llevo varias noches probando sobre.. como implementar el calculo de la altura de este arbol ;-)