Estimados,
Intengo encontrar el maximo valor, de un arbol, pero algo hago mal...Eh tratado de adaptar codigo, pero no estoy entendiendo...Me dan una mano? Muchas gracias!
#include <stdio.h>
#include <stdlib.h>
typedef struct arbol{
int dato;
struct arbol *der;
struct arbol *izq
}treenode;
void crear(treenode **arb);
void mostrarOrden (treenode *hoja);
void mostrarPreorden(treenode *hoja);
void mostrarPosorden(treenode *hoja);
int contarNodosHoja(treenode *p);
int sumarMultiplosDeCuatro(treenode *p);
treenode *primerNodo(treenode *hoja);
int sumatoriaImparesRaiz(treenode *p, int raiz);
int contarImparesRaiz(treenode *p, int raiz);
void insertar(treenode **hoja,int num);
int maximo(treenode *p);
int main(){
treenode *arb=NULL;
int max=0;
crear(&arb);
printf("\nMuestra En Orden\n"); mostrarOrden (arb);
printf("\nMuestra En PreOrden\n"); mostrarPreorden(arb);
printf("\nMuestra En PosOrden\n"); mostrarPosorden(arb);
max=maximo(arb);
}
//Crea el Arbol
void crear(treenode **hoja){
int num;
while(num!=-1){
insertar(&(*hoja),num);
}
}
//Inserta Hoja al Arbol
void insertar(treenode **hoja,int num){
if(num==-1){
return;
}
if(*hoja==NULL){
(*hoja
)=(treenode
*)malloc(sizeof(treenode
)); (*hoja)->dato=num;
(*hoja)->der=NULL;
(*hoja)->izq=NULL;
}else{
//Si el Numero es Mayor va a la Derecha
if(num>(*hoja)->dato){
insertar(&(*hoja)->der,num);
}else{
insertar(&(*hoja)->izq,num);
}
}
return;
}
//Mostrar en orden (Izquierda - Raiz - Derecha)
void mostrarOrden (treenode *hoja){
if (hoja!=NULL){
mostrarOrden(hoja->izq);
mostrarOrden(hoja->der);
}
return;
}
//Mostrar en preOrden (Raiz - Izquierda - Derecha)
void mostrarPreorden(treenode *hoja){
if (hoja!=NULL){
mostrarPreorden(hoja->izq);
mostrarPreorden(hoja->der);
}
return;
}
//mostrar en posOrden (Izquierda - Derecha - Raiz)
void mostrarPosorden(treenode *hoja){
if (hoja!=NULL){
mostrarPosorden(hoja->izq);
mostrarPosorden(hoja->der);
}
return;
//Funcion Maximo
int maximo(treenode *p){
if(p==NULL){
return -99;
}else{
int temp ;
temp=max( maximo(p->izq), maximo(p->der));
return( max( p->dato , temp ) );
}
}
}
Si alguno tiene una idea, del por que no encuentra el dato y me entrega basura...voy a estar mas que agradecido! Saludos a todos!