LeetCode Q 958 - Check Completeness of a Binary Tree
Given a binary tree, determine if it is a complete binary tree.
Definition of a complete binary tree from Wikipedia:
In a complete binary tree every level, except possibly the last, is completely filled, and all nodes in the last level are as far left as possible. It can have between 1 and 2h nodes inclusive at the last level h.
Example 1: Input: [1,2,3,4,5,6] ; Output: true
Explanation: Every level before the last is full (ie. levels with node-values {1} and {2, 3}), and all nodes in the last level ({4, 5, 6}) are as far left as possible.
Example 2: Input: [1,2,3,4,5,null,7] ; Output: false
Explanation: The node with value 7 isn’t as far left as possible.
Note: The tree will have between 1 and 100 nodes.
Solution: BFS
We traverse the tree layer by layer. If a tree is a complete tree, then the first null node we encounter is the end of the tree. If we encounter some not null nodes after this end node, we can confirm this tree is not complete.
Code:
public boolean isCompleteTree(TreeNode root) {
boolean isEnd = false;
Queue<TreeNode> que = new LinkedList<>();
que.offer(root);
while (!que.isEmpty()) {
int curr = que.poll();
if (curr == null) {
isEnd = false;
} else {
if (isEnd) return false;
que.offer(curr.left);
que.offer(curr.right);
}
}
return true;
}