方法1
get the index of each node from 1 to n, if it’s completed binary tree, the len(nodes) == index of last node, else, the count of nodes < index of last node
class Solution:
def isCompleteTree(self, root: TreeNode) -> bool:
queue = [(root, 1)]
nodes = []
while queue:
node, v = queue.pop(0)
nodes.append((node, v))
if node.left:
queue.append((node.left, 2*v))
if node.right:
queue.append((node.right, 2*v+1))
return nodes[-1][1] == len(nodes)
方法2
similar thought as method1, save space complexity
class Solution(object):
def isCompleteTree(self, root):
nodes = [(root, 1)]
i = 0
while i < len(nodes):
node, v = nodes[i]
i += 1
if node:
nodes.append((node.left, 2*v))
nodes.append((node.right, 2*v+1))
return nodes[-1][1] == len(nodes)