当前位置: 首页 > 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的左右孩子是否为空,不为空让左右孩子入队,依次类推。。。。。

知识回顾:

 

又水一篇文章

 

相关文章:

  • Relooking:损失权重λ 、梯度权重α、学习率η
  • http传输协议的加密
  • 【C/C++】线程安全初始化:std::call_once详解
  • VoltAgent 是一个开源 TypeScript 框架,用于构建和编排 AI 代理
  • 【题解-洛谷】B4278 [蓝桥杯青少年组国赛 2023] 简单算术题
  • Java 注解与反射(超详细!!!)
  • React从基础入门到高级实战:React 生态与工具 - React 国际化(i18n)
  • Mac系统下,利用wget批量下载ICESat-2测高内陆水位高数据ALT13
  • SpringBoot整合RocketMQ--实例
  • RTX腾讯通停服后,有哪些兼容Linux及移动端的升级途径?
  • SQL(Database Modifications)
  • 杏仁海棠花饼的学习日记第十四天CSS
  • Windows 11 全角半角切换方法
  • 《仿盒马》app开发技术分享-- 订单列表页(端云一体)
  • 日常--OBS+mediamtx实现本地RTMP推流环境搭建(详细图文)
  • Telegram平台分发其聊天机器人Grok
  • 【仿生系统】爱丽丝的“内在”或“灵魂”:概念与形式
  • 关于《DAHSF》即《火小兔智慧开发平台V2.0》的碎碎念
  • 微机系统-汇编语言入门
  • 计算机图形学:(六)渲染管线
  • 做汽车配件外贸用什么网站/吉安seo招聘
  • 做电商网站需要会些什么/郑州网络推广哪家口碑好
  • 做网站前台用什么问题/html网页制作模板代码
  • 网站只有一个首页单页面怎么做排名/免费发布信息网网站
  • 网站404怎么做视频教程/seo核心技术排名
  • 礼泉做网站/百度升级最新版本下载安装