问题:按层次遍历二叉树
在网上看了一些按层次遍历二叉树的算法,这里修改了一下通过队列来按层次遍历二叉树的算法
——————————————————-
网上说的通过队列来实现的解释是:
设置一个队列,然后只要队列不为空,将对首元素的左右孩子加入队列(如果左右孩子不为空),然后将队列的首元素出对即可
流程如下:
注:图片来源网络
为了避免大材小用,用单向队列简简单单,清清淡淡。
#include
#include
using namespace std;
void PrintAtLevel(Tree T) {
queue myqueue;
myqueue.push(T);
while (!myqueue.empty()) {
Tree tmp = myqueue.front();
if (tmp->lchild != NULL)
myqueue.push(tmp->lchild);
if (tmp->rchild != NULL)
myqueue.push(tmp->rchild);
cout << tmp->value << " ";
myqueue.pop();
}
}