class Solution {
public boolean isCompleteTree(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
boolean leaf = false;//是否遇到孩子只有一个的节点
while (!queue.isEmpty()) {
root = queue.poll();
if (
(root.left == null && root.right != null)//判断是否左为空 又不为空
|| (leaf && (root.left != null || root.right != null))//判断是否遇到了叶子节点 且是否符合叶子节点条件
) {
return false;
}
if (root.left != null) {
queue.add(root.left);
}
if (root.right != null) {
queue.add(root.right);
}
if (root.left == null || root.right == null){//判断是否出现 只有一个孩子的节点 呢么后边的节点都应该是 叶子节点
leaf = true;
}
}
return true;
}
}