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) {
boolean isComplete = false; // 是否遍历完成
LinkedList<TreeNode> queue = new LinkedList<>(); // 创建一个队列,用来存储树节点
queue.offer(root); // 先添加root节点
while (!queue.isEmpty()) {
TreeNode node = queue.poll();
if (node == null) { // 为null,表示到达叶子节点,后面不应该再有元素了
isComplete = true;
continue;
}
if (isComplete) { // 两次到达叶子节点,说明不是完全二叉树
return false;
}
queue.offer(node.left); // 加入左子节点
queue.offer(node.right); // 加入右子节点
}
return true;
}
}