Если мы сможем извлечь следующий элемент на том же уровне, мы сделали. По нашим уровню знаний , мы можем получить доступ к этому элементу , используя ширину первого обхода.
Теперь только проблема заключается в том, чтобы проверить, если мы находимся на последний элемент на любом уровне. По этой причине, мы должны быть присоединяя разделитель (NULL в данном случае), чтобы отметить конец уровня.
Алгоритм: 1. Положите корень в очереди.
2. Put NULL в очереди.
3. В то время как очередь не пуста
4. х = первый элемент выборка из очереди
5. Если й не NULL
6. х-> rpeer <= верхний элемента очереди.
7. положить левый и правый дочерний х в очереди
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;
}