def bfs(root):
if not root:
return []
queue = deque([root])
traversal = []
while queue:
node = queue.popleft()
traversal.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
return traversal