SoloCodigo

Programación General => Pascal => Mensaje iniciado por: Ocean Soul en Miércoles 5 de Octubre de 2005, 22:55

Título: Recorrido Por Niveles
Publicado por: Ocean Soul en Miércoles 5 de Octubre de 2005, 22:55
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 !!!!!  :(
Título: Re: Recorrido Por Niveles
Publicado por: Alpha_ en Jueves 6 de Octubre de 2005, 04:51
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.-