Invert Binary Tree – Solution & Complexity

Watch: Invert Binary Tree with recursion

Swap each node's left and right children, then invert both subtrees. The recursion visits every node once: O(n) time and O(h) stack space. A BFS queue that swaps children level by level works too.

Solution Walkthrough

  1. Step 1: Recognize the Pattern

    The key pattern is: DFS swaps children at every node. Identify the state and invariant before coding.

  2. Step 2: Build the Algorithm

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

  3. Step 3: Check Edge Cases

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

  4. Step 4: Solution and Complexity

    Time: O(n). Space: O(h).

    Java/Go/Rust below are reference solutions for learning the pattern in those languages; only Python and JavaScript can be run and submitted for this problem, since the remote judge doesn't support the TreeNode structure yet.

    def invert_tree(root: TreeNode) -> TreeNode:
        if root is None:
            return None
        root.left, root.right = invert_tree(root.right), invert_tree(root.left)
        return root

FAQ