二叉树的完全性检验

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

题目链接

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. 虚拟机ubuntu14.04系统设置静态ip
  2. Oracle11gR2 64bit+Oracle11gR2Client32bit+pl/sql 9
  3. hive export import
  4. python中的time库安装步骤-python time模块的使用
  5. 若依前后端分离版手把手教你本地搭建环境并运行项目
  6. mpvue微信小程序http请求-fly.js
  7. linux下基于jrtplib库的实时传送实现
  8. 第六章连接和分组查询
  9. 完全弄懂C++中的构造与析构函数
  10. 确定不进来看看?分享一个插件,让敲代码不再枯燥,activate-power-mode
  11. ionic4 背景设置动态图片报错WARNING: sanitizing unsafe style value background-image:url
  12. 学习react的网站
  13. flash物理引擎应用:FisixObject类(1)
  14. Linux搭建Redis集群(搭建集群必看)
  15. 英文科技论文写作与学术报告Lecture 2习题答案
  16. Andy’s First Dictionary(安迪的第一部词典)
  17. 搜集网络上比较好的中文语料库
  18. 全球互联网排名_全球互联网的梦想已死
  19. 把一元兑换成1分、2分、5分的硬币,有几种换法?
  20. Opencv Python版学习笔记01.计算机眼中的图像

热门文章

  1. Redis的过期键删除策略和数据逐出策略
  2. 一念天堂一念地狱——Impossible Finance 闪电贷攻击事件跟踪
  3. R语言学习笔记一:正态性检验与判断
  4. Android app 不重启切换应用语言 中英文切换
  5. 空气净化器的过滤网能够清洗吗?怎样清洗?
  6. 2019年20种程序员必备前端Web开发工具
  7. 蒜头君救人 状压DP
  8. python时间序列预测不连续怎么办_Python建模:预测周期性时间序列的正确姿势
  9. 解决Cannot find module ‘meteor/meteor’ ‘meteor/check’ ‘meteor/mongo’
  10. 鼻腔需要每天清洗吗?