当前位置: 首页 > news >正文

5.3.1_2二叉树的层次遍历

遍历过程:

从根节点开始,从左到右一层一层遍历,如下:ABCDEFGHIJKL

初始化一个辅助队列,让根节点先入队,每次判断队列是否为空,不空则让队头节点出队+访问该节点+让该节点左右孩子入队尾(先左孩子入队再右孩子)

如下:根节点A入队之后,队列不为空则A出队访问A,然后A的左右孩子BC(如果A有左右孩子)入队,先左B入队再右C入队,此时队头元素为B,然后判断队列不为空,则B出队然后访问B+B的左右孩子DE入队(D左D先入队),即此时队列元素为CDE,判断队列不为空则队头C出队+访问C+C的左右孩子FG入队(F左先入队),即此时队列元素为DEFG,再次循环。。。。。。。

代码实现:

 因为不知道访问的树有多少节点所以使用了链队列作为初始化队列LinkedQueue,而不是顺序队列

用BiTNode表示一个个节点,节点有data数据域和指向左右孩子的指针,在初始化辅助队列里存储的是不是节点而是指针,因为存储指针占用的空间小,如下LevelOrder方法,先EnQueue让根节点入队,然后while循环判断Q队列不为空,不为空再DeQueue出队即此时p=根节点A,然后visit访问p,再判断出队头结点P是否有左孩子p->lchild != null,有的话EnQueue(Q,p->lchild)即B入队尾,同样判断右孩子让C入队尾,进行下一轮while循环队列不为空,队列头结点B出队即P=B,然后访问P,判断P的左右孩子是否为空,不为空让左右孩子入队,依次类推。。。。。

知识回顾:

 

又水一篇文章

 

http://www.xdnf.cn/news/718273.html

相关文章:

  • 博客摘录「 Activiti7工作流引擎:基础篇(二) 自动生成表结构」2024年9月13日
  • 更换Homebrew 源
  • 【C/C++】闭包的几个用处
  • 如何用Go创建一个 deployment 到容器拉起来的全流程
  • python 制作复杂表格报告
  • Java 开发上门家政系统源码:全流程数字化管理,适配家政公司 / 个体户接单派单
  • MTK平台-- wifi 暗屏待机 low power问题分析
  • 自增长主键的优缺点分析
  • 20中数组去重的方法20种数组去重的方法
  • 在Start routine里替换掉source package里面的non-ASCII字符
  • 25平航杯复现
  • React 第四十九节 Router中useNavigation的具体使用详解及注意事项
  • 可视化图解算法47:包含min函数的栈
  • 一种监控录像视频恢复的高效解决方案,从每一帧中寻找可能性
  • Docker 部署项目
  • Windows10家庭版添加本地安全策略(需要联网)
  • NC52 有效括号序列【牛客网】
  • YOLO12改进-模块-引入AFE模块 增强模型对复杂场景(如杂乱背景、小目标、半透明物体)的特征提取能力
  • Siemens西门子罗宾康系列特价型号A5E31386448
  • 费用报销管理全解析:从表单设计到入账归档的标准化流程指南
  • 涂鸦智能的TuyaOpen框架入门指南:智能插座实战
  • 信号与系统速成-1.绪论
  • 4.1.2 操作数据集
  • 【Windows】【openEuler】ntpd提供时间源供windows系统同步时间
  • VMware ESXi网络配置
  • 不规则瀑布流布局拖拽重排序
  • Windows【基础操作1】
  • 学习路之PHP--easyswoole简易增删改查入门
  • Java基础 Day24
  • 字节流操作:InputStream类 读取文件的操作(三种 read 方法)