Αν είμαστε σε θέση να φέρω το επόμενο στοιχείο στο ίδιο επίπεδο, είμαστε έτοιμοι να προχωρήσουμε. Σύμφωνα με προηγούμενη γνώση μας , μπορούμε να έχουμε πρόσβαση αυτά τα στοιχεία χρησιμοποιώντας το εύρος πρώτη διάσχιση.
Τώρα μόνο πρόβλημα είναι πώς να ελέγξετε αν είμαστε στο τελευταίο στοιχείο σε κάθε επίπεδο. Για το λόγο αυτό, θα πρέπει να προσαρτώντας ένα διαχωριστικό (NULL σε αυτή την περίπτωση) για να σηματοδοτήσει τέλος του επιπέδου.
Αλγόριθμος: 1. ρίζα Βάλτε στην ουρά.
2. Βάλτε NULL στην ουρά.
3. Ενώ Queue δεν είναι άδειο
4. x = φέρω πρώτο στοιχείο από την ουρά
5. Εάν το Χ δεν είναι NULL
6. x-> rpeer <= κορυφή στοιχείο της ουράς.
7. Τοποθετήστε το αριστερό και το δεξί παιδί του x στην ουρά
8. άλλος
9. αν ουρά δεν είναι κενή
10. τεθεί NULL στην ουρά
11. τέλος, αν
12. τέλος, ενώ
13. επιστροφής
#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;
}