层次遍历(LevelOrder)就是默认为自上而下,从左到右,一层一层进行遍历
层次遍历需要借助队列来完成,
队列:先进先出(FIFO

分析:如图有一棵二叉树,按照层次遍历最终的结果就是ABCDEFG,首先将根结点A入队列。

然后根结点出队,并访问A结点,发现A结点既有左孩子也有右孩子,那么就分别将左右孩子入队,此时队列中有BC。

A的左右孩子都入队了,然后将队头结点B出队并访问,此时序列为AB,B有左右孩子,所以将B的左右孩子DE入队,队中此时有CDE。
然后队头结点C出队并访问,C有左右孩子,所以将C的左右孩子FG入队。此时队列里有DEFG。

然后队头结点D出队并访问,D没有左右孩子,所以没有可入队的结点。
继续让队头结点E出队并访问,E没有左右孩子,所以没有可入队的结点。
FG同理,此时队列为空,结束。最终层次遍历序列为:ABCDEFG。

算法思想:层次遍历使用一个队列(先进先出),将根结点入队,出队,然后访问出队结点,若它有左孩子,就将左孩子入队,若它有右孩子,就将右孩子入队,然后访问队头结点,如此循环下去,直到队列为空,就结束了。
代码:

void LevelOrder(BiTree T){  // 全篇❤InitQueue(Q); // 初始化队列Q,队列通常用Q表示,栈用S表示BiTree *p;EnQueue(Q,T); // 将根结点入队while(!IsEmpty(Q)){ // 队列不为空则进入循环DeQueue(Q,p);  // 出队,即将队头结点出队,因为队列先进先出visit(p);  // 并访问,即加入到最终遍历序列中if(p->lchild!=NULL)  // 如果有左孩子EnQueue(Q,p->lchild);  // 就将左孩子入队if(p->rchild!=NULL)  // 如果有右孩子EnQueue(Q,p->rchild);  // 就将右孩子入队}
}

注解:

二叉树:层次遍历算法(自上而下,从左到右)相关推荐

  1. 二叉树:层次遍历算法(自下而上,从右到左)

    和上一个算法:二叉树:层次遍历算法(自上而下,从左到右)类似,是在上一个的基础上完成的,上一个是自上而下,从左到右,是默认的层次遍历算法. 而与之相反的,本题是自下而上,从右到左的层次遍历,需要借助队 ...

  2. 二叉树层次遍历算法 python_二叉树的遍历详解:前、中、后、层次遍历(Python实现)...

    二叉树的遍历详解:前.中.后.层次遍历(Python实现) 二叉树是一种常见的数据结构,而它的常见遍历方法有前序遍历.中序遍历.后续遍历.层次遍历--掌握这几种遍历方法是很有必要的. 假设我们二叉树节 ...

  3. 数据结构——二叉树的递归遍历算法与非递归遍历算法+层次遍历算法

    (文章篇幅有点长,二叉树的递归遍历算法不作详细分析,但是二叉树的非递归遍历算法和层次遍历算法都有非常详细的分析过程,记得往下翻哦!) 二叉树的递归遍历算法实现 我们首先用递归的方法先序遍历创建这样一棵 ...

  4. 二叉树的层次遍历算法实现

    二叉树层次遍历就是按照深度从上往下从左往右依次遍历,与常见的三种先.中.后序遍使用的递归不同,需要使用到队列来实现. 分析:如果根节点不为空,在读根节点的数据读出,同时把左右节点的地址存好,然后再从左 ...

  5. 【swjtu】数据结构实验6_二叉树的遍历算法

    实验内容及要求: 编写程序,用先序递归遍历法建立二叉树的二叉链表存储结构,然后输出其先序.中序.后序以及层次遍历结点访问次序.其中层次遍历的实现需使用循环队列.二叉树结点数据类型建议选用字符类型. 实 ...

  6. c++根据二叉树的层次遍历建立二叉树_二叉树-层次遍历(C++)

    Today,叨叨Chen继续给大家分享算法啦.层次遍历二叉树是大家再熟悉不过的二叉树操作了,看到这个算法通常会联想到队列,没错,叨叨Chen设计的层次遍历算法也是用到了队列(先进先出),下面一起进入算 ...

  7. Python实现: 常用排序算法 二叉树的遍历算法

    转载自:http://www.cnblogs.com/alex3714/articles/5474411.html点击打开链接,感谢原作者,如有侵权,联系删除 本节内容 算法定义 时间复杂度 空间复杂 ...

  8. html二叉树遍历,二叉树的遍历算法

    二叉树的遍历算法 概述 二叉树作为一个基础的数据结构,遍历算法作为一个基础的算法,两者结合当然是经典的组合了.很多题目都会有 ta 的身影,有直接问二叉树的遍历的,有间接问的.比如要你找到树中满足条件 ...

  9. 重拾算法(3)——用458329个测试用例全面测试二叉树和线索二叉树的遍历算法

    重拾算法(3)--用458329个测试用例全面测试二叉树和线索二叉树的遍历算法 在"上一篇"和"上上一篇"中,我给出了二叉树和线索二叉树的遍历算法.给出算法容易 ...

  10. [LeetCode] Binary Tree Level Order Traversal 二叉树层次遍历(DFS | BFS)

    目录: 1.Binary Tree Level Order Traversal - 二叉树层次遍历 BFS 2.Binary Tree Level Order Traversal II - 二叉树层次 ...

最新文章

  1. 物流信息管理系统MySQL设计,物流管理系统的SQL数据库设计(含代码)
  2. MyEclipse连接MySQL时遇到的各种烦人事
  3. tp设置打印机虚拟服务器,tp打印机服务器设置
  4. Ubuntu下GCC引用mysql头文件和库文件
  5. 【杂谈】为了让大家学好深度学习模型设计和优化,有三AI都做了什么
  6. python函数编程实战_(转)函数式编程实战教程(Python版)
  7. 这些Intel Atom处理器千万别升Windows 10创意者更新:不兼容
  8. Java-Arrays数组操作
  9. 从零开始学习OpenCL开发(二)一个最简单的示例与简单性能分析
  10. 《2022年中国网络安全市场全景图》
  11. 最新过浩方过VS魔兽1.24b全图工具发布
  12. 数据库系统概念-第六版 - charter 3 - 笔记 4
  13. 《全民学乒乓》学习笔记
  14. Modern Family Season 1#01
  15. PHP面向对象5-基本概念
  16. 国际标准ISO/IEC 30144: 2020在智能变电站辅助监测中的应用研究
  17. Roboware studio字体断续问题
  18. 编程之旅-Day13
  19. 物联网平台是什么,怎么选择合适的物联网平台?
  20. 主梁弹性模量计算_2-5-2主梁内力计算范例.ppt

热门文章

  1. 从新手到架构师,一篇就够:从100到1000万高并发的架构演进之路
  2. webRTC(十一):webrtc 实时共享桌面
  3. android sim卡联系人存储格式,如何在Android设备上将联系人复制到SIM卡
  4. 请设计一个宠物社交APP。
  5. 晨枫U盘启动盘制作工具V4.0-安装原版XP的方法
  6. 清明节海报设计软件测试,PS清明节海报设计教程
  7. mysql cc攻击_CC攻击数据详细分析
  8. 罗斯蒙特248温度变送器248HANANONS
  9. PTX/CR偶联物胶束/TAT-KLA/阿司匹林偶联/双氢青蒿偶联紫杉醇的制备
  10. 听说你还在花钱从网上买 PPT 模板?