二叉树层序遍历
说完了二叉树的先序、中序以及后序遍历方法,那么我们再来谈一谈二叉树如何层序遍历
请看大屏幕 。。。。
上图是一棵二叉树,层序遍历结果:1 2 3 4 5 6
咦,我想你可能会疑惑什么叫做层序遍历,其实很简单,就是按照一层一层的去遍历二叉树,这就很容易理解了。
- 首先让我们来看看如何去层序遍历二叉树
#include <queue>
void LevelOrder(Node *root) {
if (root == NULL) {
printf("\n");
}
std::queue<Node *> q;
// 启动
q.push(root);
while (!q.empty()) {
Node *front = q.front();
q.pop();
printf("%c ", front->value);
if (front->left != NULL) {
q.push(front->left);
}
if (front->right != NULL) {
q.push(front->right);
}
}
printf("\n");
}
这个代码比较好理解,就不断的往队列里拉人,直到队列为空,遍历成功。
- 其实不难发现,我介绍了先序,中序、后序遍历,以及这次的层序遍历,这就正好对应了我们的深度优先,和我们的广度优先,所谓深度优先就像我们的先序中序后序一样,一直往下走,直到走不下去,而广度优先便是一层一层的走,两种方式各有好处,我建议大家还是都要掌握一下,尤其是对于我们这种菜鸟来说,多多益善嘛!!!!!
All OVER