• Miércoles 24 de Abril de 2024, 06:42

Autor Tema:  Recorrido Por Niveles  (Leído 1121 veces)

Ocean Soul

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Recorrido Por Niveles
« en: Miércoles 5 de Octubre de 2005, 22:55 »
0
Hola, les queria pedir a alquien si me pasaria o almenos ayudaria o me dijera algun sitio donde pueda encontrar algun algorimo para recorrer arboles binario por niveles.
Gracias...


PD: Es que no me sale hacerlo !!!!!  :(

Alpha_

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Recorrido Por Niveles
« Respuesta #1 en: Jueves 6 de Octubre de 2005, 04:51 »
0
Bueno, el algoritmo depende básicamente de lo que quieras hacer. Por ejemplo, acá te dejo uno que lo recorde e imprime sus datos en INORDEN.

Código: Text
  1. procedure recorreArbol(a: puntArbol);
  2. begin
  3.   if a^.izq <> nil then
  4.     recorreArbol(a^.izq);
  5.  
  6.   writeln(a^.datos);
  7.  
  8.   if a^.der <> nil then
  9.     recorreArbol(a^.der);
  10. end;
  11.  

Tan fácil como eso. Obviamente, según lo que necesites hacer, puede que sea iterativo en lugar de recursivo.

Ahora te dejo una modificación de ese, que imprime el número de nivel en el que estás:

Código: Text
  1.  
  2. procedure recorreArbol(a: puntArbol);
  3. begin
  4.   recorreArbol2(a, 0);
  5. end;
  6.  
  7. procedure recorreArbol2(a: puntArbol; nivel: byte);
  8. begin
  9.   if a^.izq <> nil then
  10.     recorreArbol2(a^.izq, nivel + 1);
  11.  
  12.   writeln(nivel);
  13.  
  14.   if a^.der <> nil then
  15.     recorreArbol2(a^.der, nivel + 1);
  16. end;
  17.  

Saludos.

Zorri.-
Alpha
http]