Dacă suntem capabili să -i aducă elementul următor , la același nivel, am terminat. Conform cunoștințelor noastre anterioare , putem accesa aceste elemente utilizând primul traversal lățime.
Acum, singura problemă este modul de a verifica dacă suntem la ultimul element de la orice nivel. Din acest motiv, ar trebui să fie un delimitator adăugarea (NULL în acest caz) pentru a marca sfârșitul unui nivel.
Algoritm: 1. Pune rădăcină în coadă.
2. Pune NULL în coadă.
3. Deși Coadă nu este gol
4. x = fetch prim element din coadă
5. Dacă x nu este NULL
6. x-> rpeer <= elementul superior al coadă.
7. pune la stânga și la dreapta a lui x copil în coadă
8. altceva
9. în cazul în care coada de așteptare nu este gol
10. pune NULL în coadă
11. final dacă
12. capăt în timp ce
13. retur
#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;
}