• Martes 5 de Noviembre de 2024, 15:55

Autor Tema:  Re: UN FAVOR, no tendran un algoritmo para encontrar la lon  (Leído 1329 veces)

brenda

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: UN FAVOR, no tendran un algoritmo para encontrar la lon
« en: Viernes 22 de Noviembre de 2002, 22:57 »
0

De Profundiis

  • Miembro activo
  • **
  • Mensajes: 89
    • Ver Perfil
Re: UN FAVOR, no tendran un algoritmo para encontrar la lon
« Respuesta #1 en: Viernes 22 de Noviembre de 2002, 23:57 »
0
Hola,
se me ocurre una solución así a bote pronto en el caso de que tengas el árbol representado con memoria estática (un vector, por ejemplo).

Tal que así:

0  1 2 3  4 5 6 7 ... (indice del vector)
A  B C D E F G H ... (nodo)
-1 0 0 1 1 2 2 3 ...  (padre del nodo)

Entonces podrías recorrerlo del final hacia arriba buscando el padre y guardándote la profundidad. Por cierto, supongo que con longitud te refieres a la altura del árbol, ¿no?

Podría ser...
suponiendo el árbol representado en un vector V:

MaxProf = 0;
for(i = longitud(V); i > 0 ; i--){
  Profund = 0; j = longitud(V);
  while(j != -1) {
    i = V[ i ];
    Profund++;
  }
  if(Profund>MaxProf)MaxProf = Profund;
}
Altura = MaxProf;


Puff, si lo tienes con punteros... no se me ocurre cómo hacerlo, tendría que buscar en algún libro... siento no poder darte nada mejor:(

Bueno, un saludo.

Murciego

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
    • http://es.geocities.com/mclosbirrias
UN FAVOR, no tendran un algoritmo para encontrar la longitu
« Respuesta #2 en: Lunes 25 de Noviembre de 2002, 12:14 »
0
Creo que se puede hacer de forma recursiva de la siguiente manera:

int alturaArbol(arbol a)
   {
   //Caso base: Estamos en una hoja;
   if (esHoja(a)) return 0;
   else
      {
       return 1+maximo(alturaArbol(a.hijoIzquierdo),alturaArbol(a.hijoDerecho));
      }
}

Espero que te sirva de ayuda. Tendrás que adaptar el codigo a tu caso concreto


Un saludo

Javier Murciego