Same Tree – Solution & Complexity

1. Recognize the Pattern

The key pattern is: Parallel DFS compares corresponding nodes. 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). Space: O(h).

def is_same_tree(p: TreeNode, q: TreeNode) -> bool:
    if p is None or q is None:
        return p is q
    return p.val == q.val and is_same_tree(p.left, q.left) and is_same_tree(p.right, q.right)

FAQ