Check Completeness of a Binary Tree

medium tree bfs

Problem

A complete binary tree has every level fully filled except possibly the last, and the last level fills left to right. Return whether the given binary tree is complete.

Inputtree = [1,2,3,4,5,null,7]
Outputfalse
BFS enqueues children (including nulls); the moment a null pops, no real node may follow.

from collections import deque
def isCompleteTree(root):
    q = deque([root])
    seen_null = False
    while q:
        node = q.popleft()
        if node is None:
            seen_null = True
        else:
            if seen_null: return False
            q.append(node.left)
            q.append(node.right)
    return True
function isCompleteTree(root) {
  const q = [root]; let head = 0, seenNull = false;
  while (head < q.length) {
    const node = q[head++];
    if (node === null) seenNull = true;
    else {
      if (seenNull) return false;
      q.push(node.left); q.push(node.right);
    }
  }
  return true;
}
class Solution {
    public boolean isCompleteTree(TreeNode root) {
        Queue<TreeNode> q = new LinkedList<>();
        q.offer(root);
        boolean seenNull = false;
        while (!q.isEmpty()) {
            TreeNode n = q.poll();
            if (n == null) seenNull = true;
            else {
                if (seenNull) return false;
                q.offer(n.left); q.offer(n.right);
            }
        }
        return true;
    }
}
bool isCompleteTree(TreeNode* root) {
    queue<TreeNode*> q; q.push(root);
    bool seenNull = false;
    while (!q.empty()) {
        TreeNode* n = q.front(); q.pop();
        if (!n) seenNull = true;
        else {
            if (seenNull) return false;
            q.push(n->left); q.push(n->right);
        }
    }
    return true;
}
Time: O(n) Space: O(n)