二叉树的完全性检验

  • 题目链接
  • 描述
  • 示例
  • 初始代码模板
  • 代码

题目链接

https://leetcode-cn.com/problems/check-completeness-of-a-binary-tree/

描述

给定一个二叉树,确定它是否是一个完全二叉树。百度百科中对完全二叉树的定义如下:若设二叉树的深度为 h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。(注:第 h 层可能包含 1~ 2h 个节点。)提示:树中将会有 1 到 100 个结点。

示例

示例 1:

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

示例 2:

输入:[1,2,3,4,5,null,7]
输出:false
解释:值为 7 的结点没有尽可能靠向左侧。

初始代码模板

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public boolean isCompleteTree(TreeNode root) {}
}

代码

注意检测位置就好了,依旧是层序遍历的思路

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public boolean isCompleteTree(TreeNode root) {int size = 0;Queue<TreeNode> nodeQueue = new LinkedList<>();Queue<Integer> posQueue = new LinkedList<>();nodeQueue.offer(root);posQueue.offer(0);while (!nodeQueue.isEmpty()) {for (int num = nodeQueue.size(); num > 0; num--) {TreeNode node = nodeQueue.poll();int pos = posQueue.poll();if (node.left != null) {size++;int cur = pos * 2 + 1;if (cur != size) {return false;}nodeQueue.offer(node.left);posQueue.offer(cur);}if (node.right != null) {size++;int cur = pos * 2 + 2;if (cur != size) {return false;}nodeQueue.offer(node.right);posQueue.offer(cur);}}}return true;}
}

leetcode 958.二叉树的完全性检验 Java相关推荐

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

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

  2. LeetCode 958. 二叉树的完全性检验(层序遍历)

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

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

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

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

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

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

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

  6. leetcode 563. 二叉树的坡度(Java版)

    题目 https://leetcode-cn.com/problems/binary-tree-tilt/ 题解 从问题的描述中,可以清楚地了解到,我们需要在给定树的每个结点处找到其坡度,并将所有的坡 ...

  7. leetcode 543. 二叉树的直径(Java版)

    题目 https://leetcode-cn.com/problems/diameter-of-binary-tree/ 题解 1:暴力法 暴力解法:遍历这棵树,当以每个节点为根时,计算 距离,取最大 ...

  8. LeetCode Hot100 ---- 二叉树专题

    树 力扣102:二叉搜索树的层次遍历 力扣105:从前序和中序重构二叉树 力扣108:将有序数组转化为二叉搜索树 力扣110:平衡二叉树 力扣113:路径总和 力扣124:二叉树的最大路径和 力扣13 ...

  9. LeetCode——1104. 二叉树寻路(Path In Zigzag Labelled Binary Tree)[中等]——分析及代码(Java)

    LeetCode--1104. 二叉树寻路[Path In Zigzag Labelled Binary Tree][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 按位置求解 (1 ...

最新文章

  1. laravel-admin关联查询问题解决办法
  2. c#rs232与三菱通讯_MCGS 与 FX3U PLC 之间的无线通讯实例
  3. 快速高效计算sin与cos
  4. 必备的Linux基础命令
  5. 批量重命名文件和批量修改文件扩展名
  6. 7805输入电流有要求吗_防雷!防护电路在PCB走线方面的要求(某500强企业内部资料~)...
  7. C#获取实体的属性和值(通用于BS、cs架构)
  8. ghost系统卡正在启动服务器,安装win7系统卡在正在启动windows界面的解决方法
  9. 针对英特尔xtu超频软件安装失败以及英伟达GeForce Experience安装程序无法继续的解决方法
  10. 上网行为管理(使用软件Panabit)
  11. [设备驱动] 最简单的内核设备驱动--字符驱动
  12. iphone照片恢复至android,将照片从Android传输到iPhone的8种方法很容易
  13. php只取时间的下士_PHP获取各种起止时间
  14. Unity-简单的坦克大战的一些思路
  15. 密码学系列 - 椭圆曲线签名的基本原理
  16. 小学数学计算机教案模板,小学数学信息化教学设计模板.doc
  17. oracle和勇士,坑与“借鉴”,都是KPI逼的?
  18. 升级鸿蒙系统无法连接服务器,鸿蒙安装了描述文件检测不到更新怎么办?鸿蒙安装包验证失败怎么解决?...
  19. OSPF的LSA及优化
  20. java文件编译成功但是不能运行_Java在dos界面运行java源文件编译成功,但运行虚拟机时出现错误:“找不到或无法加载主类”的问题...

热门文章

  1. 等保测评之服务器未配置登录失败锁定策略及登录连接超时自动退出策略
  2. cocos2dx骨骼动画Armature源码分析(三)
  3. Kotlin:静态方法
  4. Flutter 调用地图软件(高德、百度、腾讯、苹果)
  5. python 状态机第三方库,python 实用工具状态机transitions
  6. Session 5: Managing OpenStack from the Command Line
  7. 三月英语——偷学小技巧
  8. bzoj2085 [Poi2010]Hamsters 哈希+倍增
  9. [转载]危害分析和风险评估(HARA)
  10. JavaScript 冒泡排序