哈喽大家好,这里是蒟蒻hanyiyang的博文,今天,我来给大家,介绍一个关于图的算法,希望能帮助到大家!!!
层次遍历
大家来看一看上面这个图,为什么要说这是层次遍历呢,因为,这种遍历方式是一层一层进行的:
第一层:F
第二层:CE
第三层:ADHG
第四层:BM
这个就是层次遍历的大致顺序
那么算法是怎样的呢???
- 先将根节点入队
- 只要队列不为空,只要队首元素有左儿子且左儿子没有被访问过,就将左儿子入队,同理,只要队首元素有右儿子且右儿子没有被访问过,就将右儿子入队。
- 将算法第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
今天的文章层次遍历_树_树的四种遍历「建议收藏」分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/70931.html