Optimal Algorithmic Approach
Range-bounded DFS: pass min/max bounds down the recursion.
Core Invariants & Edge Cases
- Track valid range [min, max] for each node, not just compare with parent
- Left subtree max is bounded by current node's value; right by a minimum
- In-order traversal should yield strictly increasing values