Pattern
Pattern
Pattern
Use a queue to process trees level by level.
Push the current level, process all nodes in that level, then advance.
from collections import deque
queue = deque([root]) if root else deque()
levels = []
while queue:
level = []
for _ in range(len(queue)):
node = queue.popleft()
level.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
levels.append(level)