# Definition for a binary tree node.

# class TreeNode:

#     def __init__(self, val=0, left=None, right=None):

#         self.val = val

#         self.left = left

#         self.right = right

class Solution:

    def isCompleteTree(self, root: Optional[TreeNode]) -> bool:

        visit = [0 for _ in range(1001)]

        queue = deque([(1, root)])

        sz = 1

        visit[1] = 1

        while queue:

            idx, node = queue.popleft()

            if node.left != None:

                queue.append((2*idx, node.left))

                visit[2*idx] = 1

                if 2*idx != sz + 1:

                    return False

                sz = 2*idx

            if node.right != None:

                queue.append((2*idx+1, node.right))

                visit[2*idx+1] = 1

                if 2*idx + 1 != sz + 1:

                    return False

                sz = 2*idx+1

        return True


순서대로 읽어나가면 무-난