leetcode 958.二叉树的完全性检验 Java
二叉树的完全性检验
- 题目链接
- 描述
- 示例
- 初始代码模板
- 代码
题目链接
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相关推荐
- 2021- 10 -9 LeetCode 958. 二叉树的完全性检验(待补完)
二叉树的完全性检验 给定一个二叉树,确定它是否是一个完全二叉树. 若设二叉树的深度为 h,除第 h 层外,其它各层 (1-h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就 ...
- LeetCode 958. 二叉树的完全性检验(层序遍历)
1. 题目 给定一个二叉树,确定它是否是一个完全二叉树. 百度百科中对完全二叉树的定义如下: 若设二叉树的深度为 h,除第 h 层外,其它各层 (1-h-1) 的结点数都达到最大个数,第 h 层所有的 ...
- 958. 二叉树的完全性检验 golang
958. 二叉树的完全性检验 给定一个二叉树,确定它是否是一个完全二叉树. 百度百科中对完全二叉树的定义如下: 若设二叉树的深度为 h,除第 h 层外,其它各层 (1-h-1) 的结点数都达到最大个数 ...
- 【LeetCode笔记】958. 二叉树的完全性检验(Java、二叉树、BFS)
文章目录 题目描述 思路 && 代码 层级遍历法 BFS 二刷 题目描述 考察对完全二叉树性质的理解 思路 && 代码 层级遍历法 一开始试了自底向上的DFS,过了90 ...
- 958. 二叉树的完全性检验
给定一个二叉树,确定它是否是一个完全二叉树. 百度百科中对完全二叉树的定义如下: 若设二叉树的深度为 h,除第 h 层外,其它各层 (1-h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集 ...
- leetcode 563. 二叉树的坡度(Java版)
题目 https://leetcode-cn.com/problems/binary-tree-tilt/ 题解 从问题的描述中,可以清楚地了解到,我们需要在给定树的每个结点处找到其坡度,并将所有的坡 ...
- leetcode 543. 二叉树的直径(Java版)
题目 https://leetcode-cn.com/problems/diameter-of-binary-tree/ 题解 1:暴力法 暴力解法:遍历这棵树,当以每个节点为根时,计算 距离,取最大 ...
- LeetCode Hot100 ---- 二叉树专题
树 力扣102:二叉搜索树的层次遍历 力扣105:从前序和中序重构二叉树 力扣108:将有序数组转化为二叉搜索树 力扣110:平衡二叉树 力扣113:路径总和 力扣124:二叉树的最大路径和 力扣13 ...
- LeetCode——1104. 二叉树寻路(Path In Zigzag Labelled Binary Tree)[中等]——分析及代码(Java)
LeetCode--1104. 二叉树寻路[Path In Zigzag Labelled Binary Tree][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 按位置求解 (1 ...
最新文章
- 虚拟机ubuntu14.04系统设置静态ip
- Oracle11gR2 64bit+Oracle11gR2Client32bit+pl/sql 9
- hive export import
- python中的time库安装步骤-python time模块的使用
- 若依前后端分离版手把手教你本地搭建环境并运行项目
- mpvue微信小程序http请求-fly.js
- linux下基于jrtplib库的实时传送实现
- 第六章连接和分组查询
- 完全弄懂C++中的构造与析构函数
- 确定不进来看看?分享一个插件,让敲代码不再枯燥,activate-power-mode
- ionic4 背景设置动态图片报错WARNING: sanitizing unsafe style value background-image:url
- 学习react的网站
- flash物理引擎应用:FisixObject类(1)
- Linux搭建Redis集群(搭建集群必看)
- 英文科技论文写作与学术报告Lecture 2习题答案
- Andy’s First Dictionary(安迪的第一部词典)
- 搜集网络上比较好的中文语料库
- 全球互联网排名_全球互联网的梦想已死
- 把一元兑换成1分、2分、5分的硬币,有几种换法?
- Opencv Python版学习笔记01.计算机眼中的图像
热门文章
- Redis的过期键删除策略和数据逐出策略
- 一念天堂一念地狱——Impossible Finance 闪电贷攻击事件跟踪
- R语言学习笔记一:正态性检验与判断
- Android app 不重启切换应用语言 中英文切换
- 空气净化器的过滤网能够清洗吗?怎样清洗?
- 2019年20种程序员必备前端Web开发工具
- 蒜头君救人 状压DP
- python时间序列预测不连续怎么办_Python建模:预测周期性时间序列的正确姿势
- 解决Cannot find module ‘meteor/meteor’ ‘meteor/check’ ‘meteor/mongo’
- 鼻腔需要每天清洗吗?