• Jueves 4 de Julio de 2024, 18:03

Autor Tema:  Ayuda -- Calcular Altura Arbol  (Leído 1200 veces)

lulial

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Ayuda -- Calcular Altura Arbol
« en: Miércoles 1 de Septiembre de 2004, 22:25 »
0
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

Ruben3d

  • Miembro HIPER activo
  • ****
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: Ayuda -- Calcular Altura Arbol
« Respuesta #1 en: Miércoles 1 de Septiembre de 2004, 23:42 »
0
Hola.

Has de hacer algo así

Código: Text
  1. int calcularAltura(nodo*);
  2. {
  3.   if es hoja
  4.     return 1;
  5.   else
  6.   {
  7.     int a = calcularAltura(hijo izq);
  8.     int b = calcularAltura(hijo dcho);
  9.     if (a > b)
  10.       return a + 1;
  11.     else
  12.       return b + 1;
  13.   }
  14. }
  15.  

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.

Un saludo.

Ruben3d