Si nous sommes en mesure d'aller chercher l'élément suivant au même niveau, nous fait. Selon notre connaissance préalable , nous pouvons accéder à ces éléments en utilisant la largeur première traversal.
Maintenant, seul problème est de savoir comment vérifier si nous sommes le dernier élément à tout niveau. Pour cette raison, nous devrions être l'ajout d'un séparateur (NULL dans ce cas) pour marquer la fin d'un niveau.
Algorithme: 1. Mettez racine dans la file d' attente.
2. NULL Mettre en file d' attente.
3. Alors que la file d' attente ne soit pas vide
4. x = chercher premier élément de file d' attente
5. Si x est NULL
6. X-> rpeer <= élément supérieur de la file d' attente.
7. mettre l' enfant à gauche et à droite de x dans la file d' attente
8. autre
9. si la file d' attente n'est pas vide
10. NULL mettre en file d' attente
11. fin si
12. fin en
13. retour
#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;
}