Si somos capaces de buscar el siguiente elemento en el mismo nivel, hemos terminado. Según nuestro conocimiento previo , podemos acceder a estos elementos usando primero en amplitud de recorrido.
Ahora único problema es cómo comprobar si estamos en el último elemento en cualquier nivel. Por esta razón, debemos estar añadiendo un delimitador (NULL en este caso) para marcar el final de un nivel.
Algoritmo: 1. Poner en cola de raíz.
2. NULL Poner en cola.
3. Mientras cola no está vacía
4. x = podido recuperar primer elemento de la cola
5. Si x no es NULL
6. x-> rpeer <= elemento superior de cola.
7. Use izquierda y hijo derecho de x en la cola
8. demás
9. Si la cola no está vacía
NULL 10. puesta en cola
11. final si
12. final mientras
13. retorno
#include <queue>
void print(tree* root)
{
queue<tree*> que;
if (!root)
return;
tree *tmp, *l, *r;
que.push(root);
que.push(NULL);
while( !que.empty() )
{
tmp = que.front();
que.pop();
if(tmp != NULL)
{
cout << tmp=>val; //print value
l = tmp->left;
r = tmp->right;
if(l) que.push(l);
if(r) que.push(r);
}
else
{
if (!que.empty())
que.push(NULL);
}
}
return;
}