Validate Binary Search Tree – Solution & Complexity

1. Recognize the Pattern

The key pattern is: DFS carries the full valid value range. 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_valid_bst(root: TreeNode) -> bool:
    def valid(node, low, high):
        if node is None:
            return True
        return low < node.val < high and valid(node.left, low, node.val) and valid(node.right, node.val, high)
    return valid(root, float("-inf"), float("inf"))

FAQ