1. 题目

给定一个二叉树,确定它是否是一个完全二叉树。

百度百科中对完全二叉树的定义如下:

若设二叉树的深度为 h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。(注:第 h 层可能包含 1~ 2h 个节点。)

示例 1:

输入:[1,2,3,4,5,6]
输出:true
解释:最后一层前的每一层都是满的(即,结点值为 {1} 和 {2,3} 的两层),
且最后一层中的所有结点({4,5,6})都尽可能地向左。
示例 2:

输入:[1,2,3,4,5,null,7]
输出:false
解释:值为 7 的结点没有尽可能靠向左侧。提示:
树中将会有 1 到 100 个结点。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/check-completeness-of-a-binary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 层序遍历

  • 利用队列层序遍历,注意对子节点为空的话,也把它加入队列
  • 当遇见NULL出队时,后面再遇见非空节点出队,则说明不是完全二叉树
class Solution {public:bool isCompleteTree(TreeNode* root) {bool hasNULL = false;queue<TreeNode*> q;q.push(root);TreeNode *tp;while(!q.empty()){tp = q.front();q.pop();if(hasNULL && tp != NULL)//有NULL出队了,且现在出队的非空return false;if(tp == NULL)hasNULL = true;else{q.push(tp->left);q.push(tp->right);}}return true;}
};

LeetCode 958. 二叉树的完全性检验(层序遍历)相关推荐

  1. 2021- 10 -9 LeetCode 958. 二叉树的完全性检验(待补完)

    二叉树的完全性检验 给定一个二叉树,确定它是否是一个完全二叉树. 若设二叉树的深度为 h,除第 h 层外,其它各层 (1-h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就 ...

  2. leetcode 958.二叉树的完全性检验 Java

    二叉树的完全性检验 题目链接 描述 示例 初始代码模板 代码 题目链接 https://leetcode-cn.com/problems/check-completeness-of-a-binary- ...

  3. 958. 二叉树的完全性检验 golang

    958. 二叉树的完全性检验 给定一个二叉树,确定它是否是一个完全二叉树. 百度百科中对完全二叉树的定义如下: 若设二叉树的深度为 h,除第 h 层外,其它各层 (1-h-1) 的结点数都达到最大个数 ...

  4. Leetcode 103.二叉树的锯齿形层序遍历

    难度:中等 频率:136 题目: 给定一个二叉树,返回其节点值的锯齿形层序遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 解题方法:改进的BPS[广度优先搜索] BP ...

  5. Leetcode 103. 二叉树的锯齿形层序遍历 (每日一题 20210924)

    给定一个二叉树,返回其节点值的锯齿形层序遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行).例如: 给定二叉树 [3,9,20,null,null,15,7],3/ \9 ...

  6. 【LeetCode笔记】958. 二叉树的完全性检验(Java、二叉树、BFS)

    文章目录 题目描述 思路 && 代码 层级遍历法 BFS 二刷 题目描述 考察对完全二叉树性质的理解 思路 && 代码 层级遍历法 一开始试了自底向上的DFS,过了90 ...

  7. 958. 二叉树的完全性检验

    给定一个二叉树,确定它是否是一个完全二叉树. 百度百科中对完全二叉树的定义如下: 若设二叉树的深度为 h,除第 h 层外,其它各层 (1-h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集 ...

  8. LeetCode Algorithm 103. 二叉树的锯齿形层序遍历

    103. 二叉树的锯齿形层序遍历 Ideas 首先得理解二叉树的层序遍历,它类似于广度优先搜索,在当前层搜索的时候,遍历到的每一个节点都要把它的所有孩子节点都添加到队列中. 然后我们要锯齿形遍历,可以 ...

  9. 二叉树的锯齿形层序遍历

    Leetcode:103. 二叉树的锯齿形层序遍历 - 力扣(LeetCode) (leetcode-cn.com) 还是层序遍历的问题,只不过这里需要注意层数,从而选择是正序访问还是倒序访问. 时间 ...

最新文章

  1. 显微镜下的大明内容_《显微镜下的大明》epub、mobi、azw3
  2. 二.Python的基础语法知识
  3. 十个 SCP 传输命令例子
  4. PHP Extension Makefile 製作
  5. 【赠书】图神经网络优质书籍,送你3本进行学习
  6. python区块链开发_Fabric区块链Python开发详解
  7. 手把手教你捕获数据包
  8. centos7;windows下安装和使用spice
  9. stl Vecotr中遍历方法
  10. [Linux] Ubuntu 11.04 安装 Faenza 0.9 图标集
  11. com.android.packageinstaller,Android PackageInstaller 安装和卸载
  12. VBA每日一练(2),将txt 的部分/全部内容 导入到EXCEL
  13. 视频编解码(一):ffmpeg编码H.264帧类型判断
  14. Unix/Linux存在之必然性
  15. vue+springboot实现调用本地摄像头拍照上传后端使用百度ocr识别身份证信息
  16. springboot-莫名其妙的登录界面“Please sign in“
  17. LDO输出为什么并联接地电阻?
  18. 数据时代的大数据技术,主要包括哪些内容?
  19. Linux下更改服务器名称
  20. 蔡氏混沌matlab,蔡氏混沌电路的MATLAB仿真研究_高见芳

热门文章

  1. Android App优化之ANR详解
  2. 十大经典算法 - 转载
  3. IO流--buffer
  4. Spring MVC-视图解析器(View Resolverr)-内部资源视图解析器(Internal Resource View Resolver)示例(转载实践)...
  5. RNA-Seq分析软件HTSeq的安装
  6. requests库之处理响应
  7. iOS 测试三方 KIF 的那些事
  8. bash/shell编程学习(2)
  9. OGEngine教程:声音载入
  10. C++/C中定义与声明的区别