- 题目描述:
给定一个二叉树,确定他是否是一个完全二叉树。 完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点) - 提示:
数据范围:节点数满足 1 ≤ n ≤ 100 - 代码实现:
public class Solution {
public boolean isCompleteTree (TreeNode root) {
if (root == null) return true;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
while(!queue.isEmpty()){
root = queue.peek();
if(root.left != null){
queue.offer(root.left);
}else
break;
if(root.right != null){
queue.offer(root.right);
}else
break;
queue.poll();
}
if(queue.poll().right != null)
return false;
while (!queue.isEmpty()){
TreeNode node = queue.poll();
if(node.left != null || node.right != null)
return false;
}
return true;
}
}
|