说明
![](https://i-blog.csdnimg.cn/blog_migrate/ef094802172696ba2e59cd8657cd3f7b.png)
所谓层序遍历,即按一层一层的顺序遍历二叉树。
有二叉树如图,则层序遍历结果为:
A
B
C
D
E
F
G
ABCDEFG
ABCDEFG
做法:
使用队列存储结点。
对于二叉树的每层,弹出一个结点并输出其值,而后将该结点的孩子结点放入二叉树。
重复上述步骤直到队列为空。
图示
第二层红字“弹出A”改为弹出B
代码
void LevelOrderReverse(BiNode *btree)
{
queue<BiNode*> q;
BiNode *t = btree;
q.push(t);
while(!q.empty())
{
BiNode *temp = q.front();
cout<<temp->data;
q.pop();
if(temp->lnode)
q.push(temp->lnode);
if(temp->rnode)
q.push(temp->rnode);
}
}