Pokud jsme schopni načíst další prvek na stejné úrovni, jsme hotovi. Podle našich předchozích znalostí můžeme získat přístup k těmto prvek pomocí šíři první traversal.
Nyní Jediným problémem je, jak zjistit, jestli jsme v poslední prvek na všech úrovních. Z tohoto důvodu bychom měli být připojením oddělovač (NULL v tomto případě), u příležitosti konce úrovni.
Algoritmus: 1. Vložte kořen ve frontě.
2. Vložte NULL ve frontě.
3. Zatímco fronta není prázdná
4. x = načíst první prvek z fronty
5. Pokud x není NULL
6. x-> rpeer <= horní prvek z fronty.
7. put vlevo a vpravo dítě x ve frontě
8. jiný
9. Pokud fronta není prázdná
10. put NULL ve frontě
11. Pokud konec
12. Konec zatímco
13. návratu
#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;
}