orden_nivel.cpp
// $Id$
/* COMIENZO DE DESCRIPCION
El listado en orden de nivel de los nodos de un \'arbol lista
primero la raiz, luego todos los nodos de profundidad 1, despu\'es
todos los de profundidad 2, y asi sucesivamente. Los nodos que
est\'en en la misma profundidad se listan en orden de izquierda a
derecha. Escribir una funci\'on
{\tt void orden_de_nivel (tree <int> &t)} para listar los nodos
de un \'arbol en orden de nivel.
keywords: arbol orientado
FIN DE DESCRIPCION */
// -----------------------------------------------------------------
#include <iostream>
#include <queue>
#include "./tree.h"
#include "./util.h"
#include "./util_tree.h"
using namespace aed;
using namespace std;
// -------------------------------------------------------------------
void orden_de_nivel(tree<int> &t) {
queue <node_t> q;
node_t n,n1,c;
n=t.begin();
if (n==t.end()) return;
q.push(n);
cout << *n << " ";
while (!q.empty()) {
n1=q.front();
q.pop();
c=n1.lchild();
while (c!=t.end()){
cout << *c << " ";
q.push(c);
c++;
}
}
}
// -------------------------------------------------------------------
int main () {
tree<int> t;
for (int j=0;j<5;j++) {
t.clear();
make_random_tree(t,10,2);
cout << "Arbol inicial: "<< endl;
print_tree(t);
cout << "Listado en orden de nivel: " << endl;
orden_de_nivel(t);
cout << endl;
}
cout << endl;
return 0;
}
// -------------------------------------------------------------------
Generated by GNU Enscript 1.6.6.