Wenn wir das nächste Element auf dem gleichen Niveau zu holen sind in der Lage, sind wir fertig. Gemäß unserem Vorwissen können wir diese Elemente unter Verwendung von Breiten Traversal zuzugreifen.
Jetzt nur Problem ist, wie zu überprüfen, ob wir endlich Element auf jeder Ebene sind. Aus diesem Grunde sollen wir ein Trennzeichen (NULL in diesem Fall) zu markieren Ende eines Levels werden anhängen.
Algorithmus: 1. Setzen Wurzel in der Warteschlange.
2. Setzen Sie NULL in der Warteschlange.
3. Während Warteschlange nicht leer ist ,
4. x = fetch erste Element aus der Warteschlange
5. Wenn x nicht NULL ist
6. x-> rpeer <= top Element der Warteschlange.
7. Setzen Sie nach links und rechts Kind von x in der Warteschlange
8. sonst
9. wenn Warteschlange nicht leer ist
10. Put NULL in der Warteschlange
11 end if
12 Ende , während
13 Rückkehr
#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;
}