Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: juancarlossoma en 6 Junio 2012, 06:30 am



Título: Escribir una funcion recursiva que encuentre la altura de un arbol binario... ..
Publicado por: juancarlossoma en 6 Junio 2012, 06:30 am
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:


Título: Re: Escribir una funcion recursiva que encuentre la altura de un arbol binario... ..
Publicado por: caldera_titin en 7 Junio 2012, 05:06 am
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


Título: Re: Escribir una funcion recursiva que encuentre la altura de un arbol binario... ..
Publicado por: durasno en 7 Junio 2012, 07:47 am
xDDDDDDD


Título: Re: Escribir una funcion recursiva que encuentre la altura de un arbol binario... ..
Publicado por: do-while en 7 Junio 2012, 11:22 am
¡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!


Título: Re: Escribir una funcion recursiva que encuentre la altura de un arbol binario... ..
Publicado por: juancarlossoma en 8 Junio 2012, 00:21 am
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  ;-)