Als we in staat zijn om het volgende element op hetzelfde niveau te halen, zijn we klaar. Per onze voorkennis , kunnen we toegang tot deze element met behulp van de breedte eerste traversal.
Nu enige probleem is hoe om te controleren of we nu eindelijk element op elk niveau. Daarom moeten we voegen scheidingsteken (NULL in dit geval) naar het einde van een merkteken.
Algoritme: 1. Zet wortel in wachtrij.
2. Zet NULL in de wachtrij.
3. Hoewel wachtrij niet leeg
4.x = ophalen eerste element uit de wachtrij
5. Indien x niet NULL
6. x-> rpeer <= topelement wachtrij.
7. Trek linker en rechter kind van x in rij
8. anders
9. Als wachtrij niet leeg
10. put NULL in rij
11. end if
12. end tijdens
13. rendement
#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;
}