描述
给定一个二叉树,确定他是否是一个完全二叉树。
完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。(第 h 层可能包含 [1~2h] 个节点)
import java.util.LinkedList;
import java.util.Queue;
public class CompleteTree {
static class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return bool布尔型
*/
public boolean isCompleteTree (TreeNode root) {
Queue<TreeNode> queue = new LinkedList();
if(null == root){
return true;
}
boolean isCompleteTree = true;
queue.add(root);
while(!queue.isEmpty()){
TreeNode node = queue.poll();
if(null == node){
isCompleteTree = false;
continue;
}
// 已经出现过空节点了,但又出现了叶子节点,这就不是二叉树了
if(!isCompleteTree){
return false;
}
queue.add(node.left);
queue.add(node.right);
}
return true;
}
public static void main(String[] args) {
}
}