二叉树的层序遍历

二叉树层序遍历

说完了二叉树的先序、中序以及后序遍历方法,那么我们再来谈一谈二叉树如何层序遍历

请看大屏幕 。。。。

在这里插入图片描述

上图是一棵二叉树,层序遍历结果: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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值