Universidad de Costa Rica 
 | 
  
  | 
    
       
    
       
   | 
  
    
       
   | 
  
    
       
    
       
   | 
     
Para recorrer un árbol por niveles
(Breadth-First) se puede usar una cola, en que que se 
agregan al final los nodos del árbol a recorrer. Como la 
lista incluye las operaciones de una cola, lo lógico es 
usar
"std::list<>"
para
implementar el recorrido.
    a
   /|\
  / | \
 b  c  d
   / \   \
  e   f   g
 | 
    a
   /|\
  / | \
 b  d  c
    | / \
    g e  f 
 | 
     
Además, su implementación debe recorrer en orden 
todos los nodos de cada nivel. Por ejemplo, el recorrido de los 2 
árboles de la figura sería el mismo:
a | b c d | e f g.
Use el
árbol
n-ario visto en clase, pues esa implementación está 
hecha con referencias por lo que su clase 
cola<> puede ser declarada de la siguiente 
manera:
#include "Tree_L.h" template <class T> typdef std::list< TL::Tree<T> > cola;
     
El truco para crear la cola es comenzar insertando la raíz 
de árbol junto con sus hijos, para luego continuar 
recorriéndola insertando los hijos de cada nodo. Para 
ordenar por niveles puede usar marcas dentro de la cola; estas 
marcas pueden ser un árbol nulo contruido invocando 
directamente al constructor por defecto de la clase:
Tree<T>();. Otra forma de lograr el mismo 
resultado es almacenar en un vector de listas los nodos que 
corresponden a cada nivel, de manera que en VEC[0] 
esté la lista que contiene al nodo raíz, 
"{ a }" en este caso, VEC[1] 
sería la lista de hijos de primer nivel,
"{ b c d }", etc.
Una implementación Pascal de este algoritmo se encunentra 
en
Q_BF.pas.
http://www.di-mare.com/adolfo/p/TreeCpp.htm
Tree.pas, Reporte 
Técnico ECCI-94-07, Proyecto 326-89-019,
Escuela de Ciencias de la Computación e Informática,
Universidad de Costa Rica, 1994.
http://www.di-mare.com/adolfo/p/Tree.doc
http://www.di-mare.com/adolfo/p/src/Tree.zip
Entregue su tarea por correo electrónico, como lo hizo anteriormente.
| Tiempo de entrega: | 10 días | 
    
  | 
|
| Segunda etapa: | 7 días | ||
| Modalidad: | En parejas | 
  Adolfo Di Mare <adolfo@di-mare.com>.
    
       
   | 
  
    
       
   | 
  
    
       
   |