Estimados,
Estoy practicando, pero no logro dar con la tecla...
El tema es ARBOLES.
He logrado recorrer el arbol, mostrandolo Izq Raiz Der, Raiz Izq Der y Izq Der Raiz, tambien la profundidad y buscar un Nodo en Particular...
No logro sumar los valores (hoja->dato) de los nodos! De manera recursiva!
Me podrian dar una mano?
Como siempre, mil gracias!!
Saludos para todos!
Estoy practicando, pero no logro dar con la tecla...
El tema es ARBOLES.
He logrado recorrer el arbol, mostrandolo Izq Raiz Der, Raiz Izq Der y Izq Der Raiz, tambien la profundidad y buscar un Nodo en Particular...
No logro sumar los valores (hoja->dato) de los nodos! De manera recursiva!
Código (c) [Seleccionar]
//Mostrar en orden (IRD)
void mostrarOrden (treenode *hoja)
{
if (hoja!=NULL)
{
mostrarOrden(hoja->izq);
printf("%d ",hoja->dato);
mostrarOrden(hoja->der);
}
return;
}
//Mostrar en preOrden (RID)
void mostrarPreorden(treenode *hoja)
{
if (hoja!=NULL)
{
printf("%d ",hoja->dato);
mostrarPreorden(hoja->izq);
mostrarPreorden(hoja->der);
}
return;
}
//mostrar en posOrden (IDR)
void mostrarPosorden(treenode *hoja)
{
if (hoja!=NULL)
{
mostrarPosorden(hoja->izq);
mostrarPosorden(hoja->der);
printf("%d ",hoja->dato);
}
return;
}
//Calcula profundidad del arbol
int profundidad(treenode *hoja)
{
if(hoja==NULL)
return 0;
else{
int profI=profundidad(hoja->izq);
int profD=profundidad(hoja->der);
if(profI>profD)
return profI+1;
else
return profD+1;
}
return;
}
/*
//Buscar nodo
treenode *busqueda(treenode *hoja, int busq)
{
if(hoja==NULL)
return 0;
else
if(busq==hoja->dato)
return hoja;
if(busq<hoja->dato)
{
return busqueda(hoja->izq,busq);
}else{
return busqueda(hoja->der,busq);
}
return;
}
*/
//Cuenta nodos impares
int contarImp(treenode *hoja){
if (hoja!=NULL)
{
contarImp(hoja->izq);
int cuenta=cuenta+(hoja->dato%2==0);
contarImp(hoja->der);
return cuenta;
}
}
Me podrian dar una mano?
Como siempre, mil gracias!!
Saludos para todos!