Hvis vi er i stand til å hente det neste elementet på samme nivå, er vi ferdig. Pr vår tidligere kunnskap , kan vi få tilgang til disse element ved hjelp av bredde først traversering.
Nå eneste problemet er hvordan man skal sjekke om vi er på siste elementet på ethvert nivå. Av denne grunn bør vi tilføye et skilletegn (NULL i dette tilfellet) for å markere slutten av et nivå.
Algoritme: 1. Sett rot i køen.
2. Sett NULL i køen.
3. Mens køen ikke er tom
4. x = hente første element fra køen
5. Hvis x er ikke er NULL
6. x-> rpeer <= toppelementet av køen.
7. Sett venstre og høyre barn av x i kø
8. ellers
9. hvis køen ikke er tom
10. Sett NULL i kø
11. slutt dersom
12. enden, mens
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;
}