binary tree
9
3
15
20
7
queue (FIFO)
front →
(empty)
← backBFS + direction flag
▸1zigzag(root):2 queue = [root]; leftToRight = true3 while queue not empty:4 levelSize = len(queue)5 collected = []6 for _ in range(levelSize):7 node = queue.dequeue()8 collected.append(node.val)9 enqueue node.children10 result.append(collected if leftToRight else reversed(collected))11 leftToRight = not leftToRight12 return result
state
- targetsnake by level
- leftToRighttrue