Jeśli jesteśmy w stanie sprowadzić następnego elementu na tym samym poziomie, jesteśmy gotowe. Zgodnie z naszym stanem wiedzy , możemy uzyskać dostęp do tych elementów za pomocą Szerokość pierwszego przechodzenie.
Teraz jedynym problemem jest to, jak sprawdzić, czy jesteśmy na ostatnim elementem na każdym poziomie. Z tego powodu powinniśmy być dołączenie separatora (null w tym przypadku), aby zaznaczyć koniec poziomu.
Algorytm: 1. korzeń Put w kolejce.
2. Nałożyć NULL w kolejce.
3. Podczas gdy kolejka nie jest pusta,
4 x = pobrać pierwszy element z kolejki
5. Jeśli x jest NULL
6. X> rpeer <góry elementu kolejki.
7. Nałożyć lewy i prawy X, dziecko w kolejce
8. inny
9. Jeśli kolejka nie jest pusty
10. umieścić pusta w kolejce
11 End If
12. końca podczas
13. powrotu
#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;
}