Objective: Traverse nodes layer by layer (level order), prioritizing nodes closest to the root.
4
/ \\
3 6
/ / \\
2 5 7
4.3, 6) to the queue.3 → add its left child (2).6 → add its children (5, 7).2, 5, 7 (no children).Output: 4, 3, 6, 2, 5, 7from collections import deque
def bfs(root):
if not root:
return
queue = deque([root]) # Initialize queue with root
while queue:
level_size = len(queue)
for _ in range(level_size):
node = queue.popleft()
print(node.val, end=" ")
# Add children to queue (left to right)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)