Binary Tree Right Side View – Solution & Complexity

Solution Walkthrough

1. Recognize the Pattern

The key pattern is: level-order BFS that only keeps the last node processed at each depth. Identify the state and invariant before coding.

2. Build the Algorithm

Advance one state transition at a time. Mark or update state before exploring dependent work.

3. Check Edge Cases

Test empty or minimal input, skewed shapes, duplicates where allowed, and impossible outcomes.

4. Solution and Complexity

Time: O(n) — every node is visited once. Space: O(w) for the queue, where w is the widest level of the tree (O(n) worst case on a complete tree).

All 5 languages below run and submit against the remote judge for this problem — Java/Go/Rust use the same real TreeNode structural-type support the judge added for the rest of the linked-list/tree track.

def right_side_view(root: TreeNode) -> list:
    if root is None:
        return []

    result = []
    queue = [root]
    while queue:
        level_size = len(queue)
        for i in range(level_size):
            node = queue.pop(0)
            if i == level_size - 1:
                result.append(node.val)
            if node.left:
                queue.append(node.left)
            if node.right:
                queue.append(node.right)

    return result

FAQ