Read-only web browser

Solutions

Browse the interview solutions folder with syntax highlighting.

binary-tree-level-order-traversal.py

trees/binary-tree-level-order-traversal.py · Python · 1007 B · 2026-02-16 22:00

Back to folder
# DFS or BFS to traverse the tree level by level and collect the values of the nodes at each level in a list.
# trees

# DFS - O(n) time, O(n) space
def helper(root: TreeNode, level: int, res: List[List[int]]) -> None:
    if root is None:
        return

    if len(res) == level:
        res.append([])
    res[level].append(root.val)
    helper(root.left, level+1, res)
    helper(root.right, level+1, res)
    

def levelOrder1(root: TreeNode) -> List[List[int]]:
    res = []
    helper(root, 0, res)
    return res
    
# BFS - O(n) time, O(n) space
def levelOrder(root: TreeNode) -> List[List[int]]:
    from collections import deque
    
    q = deque()
    q.append(root)
    res = []

    while q:
        qlen = len(q)
        level = []

        for _ in range(qlen):
            node = q.popleft()
            if node:
                level.append(node.val)
                q.append(node.left)
                q.append(node.right)

        if level:
            res.append(level)
    return res