二叉树完全性校验
Posted 划小船
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树完全性校验相关的知识,希望对你有一定的参考价值。
二叉树完全性校验
958. Check Completeness of a Binary Tree
Description
Given the root of a binary tree, determine if it is a complete binary tree.
In a complete binary tree, every level, except possibly the last, is completely filled, and all nodes in the last level are as far left as possible. It can have between 1 and 2h nodes inclusive at the last level h.
Example 1:
Input: root = [1,2,3,4,5,6]
Output: true
Explanation: Every level before the last is full (ie. levels with node-values {1} and {2, 3}), and all nodes in the last level ({4, 5, 6}) are as far left as possible.
Example 2:
Input: root = [1,2,3,4,5,null,7]
Output: false
Explanation: The node with value 7 isn't as far left as possible.
Constraints:
The number of nodes in the tree is in the range [1, 100].
1 <= Node.val <= 1000
Solution
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public boolean isCompleteTree(TreeNode root) {
Queue<TreeNode> bfs = new LinkedList<TreeNode>();
bfs.offer(root);
while(bfs.peek()!=null){
TreeNode node = bfs.poll();
bfs.offer(node.left);
bfs.offer(node.right);
}
while (!bfs.isEmpty() && bfs.peek() == null){
bfs.poll();
}
return bfs.isEmpty();
}
}
Discuss
考察二叉树的遍历和使用
首先广度遍历二叉树,如果当前节点不为空,把左右节点放入队列
然后队列元素弹出,如果当前元素不为空并且队列也不为空开始出队列
最后如果队列中还有元素,说明入队的时候有左节点为空的情况
以上是关于二叉树完全性校验的主要内容,如果未能解决你的问题,请参考以下文章
已知一颗二叉链表表示二叉树T ,编写函数,判断T是不是为完全二叉树。先
代码随想录算法训练营第16天 | ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数