1、题目
2、思路
主要的思想实在层次遍历上,如果遍历完了之后,整个中间没有null节点。则他为完全二叉树,看下图:
样例图3违背了完全二叉树的定义: 完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点)
3、代码
import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* public TreeNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return bool布尔型
*/
public boolean isCompleteTree (TreeNode root) {
// write code here
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
boolean flag = false;
while(!queue.isEmpty()){
for(int i=0;i<queue.size();i++){
TreeNode node = queue.poll();
if(node==null){
flag = true;
}else{
if(flag){return false;}
queue.offer(node.left);
queue.offer(node.right);
}
}
}
return true;
}
}