Programación General => C/C++ => Mensaje iniciado por: lulial en Miércoles 1 de Septiembre de 2004, 22:25
Título: Ayuda -- Calcular Altura Arbol
Publicado por: lulial en Miércoles 1 de Septiembre de 2004, 22:25
Hola!
Estoy haciendo una práctica y necesito calcular la altura de un árbol de un nodo determinado (que teóricamente es la distancia más larga del nodo a calcular la altura a un nodo hoja).
Tengo esta funcion pero no me funciona bien:
int AlturaNodo (NodoArbol *p) { /* Calculo altura de un nodo */ int altizq,altder;
if (p == NULL) return -1; /* altura del arbol vacio */ else { altizq = AlturaNodo(p->izq); /* Altura del hijo izquierdo */ altder = AlturaNodo(p->der); /* Altura del hijo derecho */ if (altizq > altder) return altizq+1; /* la mayor altura */ else return altder+1; /* mas un arco extra */ } }/*altura nodo*/
Alguna sugerencia,
Gracias, un saludo
Título: Re: Ayuda -- Calcular Altura Arbol
Publicado por: Ruben3d en Miércoles 1 de Septiembre de 2004, 23:42
Hola.
Has de hacer algo así
Código: Text
int calcularAltura(nodo*);
{
if es hoja
return 1;
else
{
int a = calcularAltura(hijo izq);
int b = calcularAltura(hijo dcho);
if (a > b)
return a + 1;
else
return b + 1;
}
}
Ajusta este código a tu programa. Creo que debería funcionar bien. El tuyo parece que omite el caso de que se llegue a una hoja.