前面学的二叉树的遍历是把二叉树看作3个部分:根,左子树,右子树,然后我们以此来访问3个部分

而层次遍历是把树看成从上到下的若干层:根结点在第一层,根结点的孩子在第二层,根结点的孩子的孩子在第三层,然后依次类推,从上到下一层一层来访问,每一层从左到右依次访问,每个结点只访问一次

如何实现?

思路:用队列

先将根结点入队,接下来就不断从队伍中去出队一个结点,同时,如果他有左右孩子,就分别将他的左右孩子入队,这就是访问顺序:首先是根结点,然后是他的左右孩子,左右孩子后面是他的左孩子的左右孩子,右孩子的左右孩子......

例子:

将a出队的同时,将他的两个孩子b,f入队

b出队的同时将c,d入队.....

这就是层次遍历的思路:先从根节点开始,依次是他的左右孩子,到左右孩子时,再分别把左右孩子的孩子继续入队,然后再将下一层入队,一层一层入队,再按入队的顺序一个一个出队

算法:

用顺序循环队列。用数组data[MaxSize]来存放队中的元素,另外我们有两个指针分别表示队头和队尾

首先初始化这个队列,InitQueue(qu)

然后将根节点b入队qu

再从队列中出队元素,出队前判断队列是否为空!QueueEmpty

若为空,就将队头元素用出队deQueue(qu,p)

输出他的值p->data,

若存在左孩子,就将左孩子入队

若存在右孩子,就将右孩子入队

当队列中没有元素时,循环结束

用到了队列初始化,入队,判断队空,出队操作

二叉树的层次遍历算法相关推荐

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

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

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

    层次遍历(LevelOrder)就是默认为自上而下,从左到右,一层一层进行遍历, 层次遍历需要借助队列来完成, 队列:先进先出(FIFO). 分析:如图有一棵二叉树,按照层次遍历最终的结果就是ABCD ...

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

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

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

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

  5. 【每日一算法】二叉树的层次遍历 II

    每日一算法-二叉树的层次遍历 II 题目 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,n ...

  6. 二叉树的层次遍历_【腾讯面试热身题】二叉树层次遍历(动画展示)

    二叉树的层次遍历同时涉及到树和队列两种数据结构的操作,因此大厂很喜欢用来作为面试的热身题.作者不少去腾讯的小伙伴,都反映,这种题一定要非常熟练,不然会被直接pass. 1 题目描述 给定一个二叉树,按 ...

  7. 数据结构——二叉树的层次遍历进阶

    之前的一个博客 数据结构--二叉树的层次遍历看完这个,可以简单实现下面的问题 问题: 1.计算二叉树的最大宽度(二叉树的最大宽度是指二叉树所有层中结点个数的最大值. 2.用按层次顺序遍历二叉树的方法, ...

  8. 数据结构——二叉树的层次遍历

    问题描述: 给你一个二叉树,请你返回其按 层序遍历 得到的节点值. (即逐层地,从左到右访问所有节点). 示例: 二叉树:[3,9,20,null,null,15,7] 返回其层次遍历结果: [ [3 ...

  9. 69. 二叉树的层次遍历Python实现

    '''69. 二叉树的层次遍历 描述 给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)您在真实的面试中是否遇到过这个题? 样例 给一棵二叉树 {3,9,20,#,#,15,7} :3/ \ ...

  10. 二叉树层次遍历c语言_每日一道 LeetCode (23):二叉树的层次遍历 II

    ❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...

最新文章

  1. Lisp-1和Lisp-2
  2. php 点击按钮更新mysql_PHP与mysql超链接 有更新按钮 跳转更新,删除后数据表中的数据 怎么做来着?...
  3. 今天下棋,结合以前一些技巧的总结
  4. Visual C#3.0新特性概览
  5. 单片机小白学步系列(九) 用万用焊板搭建实验电路
  6. CSS Margin(外边距)
  7. Zookeeper案例之分布式全局唯一ID生成
  8. ArcMap基本操作
  9. 多媒体计算机中的扬声器指的是音箱和,怎样算合格? 音箱主要指标参数全解析...
  10. 解决:qrc文件中删除资源文件后编译失败
  11. 基于VRML的虚拟校园漫游系统
  12. idea全局查找字段
  13. 实例展示:用css实现网页图片特效
  14. 致远项目管理SPM系统案例:中天金融集团股份有限公司项目管理
  15. CAS单点登录:CAS服务端搭建
  16. 2021-08-02彻底解决Typora+PicGo-Core+SMMS图床的问题
  17. 锐龙R5 4500 怎么样 相当于什么水平
  18. qq邮件如何设置html阅读,如何得知对方是否已阅读QQ邮件?
  19. iOS开发——frame和bounds详解
  20. 拼多多商家刚开店是如何破零的?

热门文章

  1. refprop物性库_refprop 9.1 下载-refprop(制冷剂物性查询运算软件)附中文教程 9.1 最新免费版 - 河东下载站...
  2. WordPress简约昼夜切换导航NDNAV主题模板
  3. 华为NP课程笔记7-BGP1
  4. WinXP无损升级Win10
  5. Java后端实现视频分段渐进式播放
  6. 基于粒子群的ieee30节点优化、配电网有功-无功优化
  7. 谷歌字体 Google Fonts
  8. Altium Designer 18简单入门介绍与分享
  9. 模糊评价模型-以2018美赛为例
  10. dx 汇编dec_汇编语言——汇编指令