层次遍历_树

哈喽大家好,这里是蒟蒻hanyiyang的博文,今天,我来给大家,介绍一个关于图的算法,希望能帮助到大家!!!

层次遍历
在这里插入图片描述
大家来看一看上面这个图,为什么要说这是层次遍历呢,因为,这种遍历方式是一层一层进行的:
第一层:F
第二层:CE
第三层:ADHG
第四层:BM
这个就是层次遍历的大致顺序
那么算法是怎样的呢???

  1. 先将根节点入队
  2. 只要队列不为空,只要队首元素有左儿子且左儿子没有被访问过,就将左儿子入队,同理,只要队首元素有右儿子且右儿子没有被访问过,就将右儿子入队。
  3. 将算法第2条执行完了以后,将队首元素弹出并输出。

这就是大致代码的实现

我们再来将上面的图根据算法再执行一遍
1.先将根节点F入队
在这里插入图片描述
2.将F的左右儿子CE入队
在这里插入图片描述
3.将F出队并输出
在这里插入图片描述
输出:F
4.将C的左右儿子AD入队,并将C出队输出
在这里插入图片描述
输出:F C
5.将E的左右儿子HG入队,并将E出队输出
在这里插入图片描述
输出:F C E
6.因A为叶子节点,则直接出队输出
在这里插入图片描述
输出:F C E A
7.将D的左儿子B入队,并将D出队输出
在这里插入图片描述
输出:F C E A D
8.因为H是叶子节点,所以直接将此出队输出
在这里插入图片描述
输出:F C E A D H
9.将G的左儿子入队,并将G出队输出
在这里插入图片描述
输出:F C E A D H G
10.因为B M都为叶子节点,所以直接出队输出,此时队列为空
在这里插入图片描述
输出:F C E A D H G B M

以上是层次遍历的大致过程,具体代码实现如下

struct node
{
   
	int data;
	int
  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值