Trim a Binary Search Tree - Problem

Given the root of a binary search tree and the lowest and highest boundaries as low and high, trim the tree so that all its elements lie in [low, high].

Trimming the tree should not change the relative structure of the elements that will remain in the tree (i.e., any node's descendant should remain a descendant).

It can be proven that there is a unique answer. Return the root of the trimmed binary search tree. Note that the root may change depending on the given bounds.

Input & Output

Example 1 — Basic Trimming
$ Input: root = [1,0,2,null,null,1,3], low = 1, high = 2
Output: [1,null,2,null,1]
💡 Note: Remove node 0 (< 1) and node 3 (> 2). Node 0's right subtree becomes new left of root 1.
Example 2 — Root Changes
$ Input: root = [3,0,4,null,2,null,null,1], low = 1, high = 3
Output: [3,2,null,1]
💡 Note: Remove node 0 and 4. The tree structure is preserved with root 3, left subtree [2,1].
Example 3 — All Nodes Valid
$ Input: root = [1,null,2], low = 1, high = 2
Output: [1,null,2]
💡 Note: All nodes are within [1,2] range, so no trimming needed.

Constraints

  • The number of nodes in the tree is in the range [1, 104]
  • 0 ≤ Node.val ≤ 104
  • The value of each node in the tree is unique
  • root is guaranteed to be a valid binary search tree
  • 0 ≤ low ≤ high ≤ 104

Visualization

Tap to expand
Trim BST: Keep nodes in range [1, 3]01214Input: range [1, 3]❌ Remove (< 1)❌ Remove (> 3)TRIM213Output: [2,1,3]✓ All nodes in [1,3]BST PropertyIf node < low:→ use right subtreeIf node > high:→ use left subtreePreserve BST structure while removing nodes outside [low, high]
Understanding the Visualization
1
Input BST
Binary search tree with range [low=1, high=3]
2
Identify Nodes
Mark nodes outside range for removal
3
Trimmed Result
Final BST with only valid nodes
Key Takeaway
🎯 Key Insight: Use BST property to efficiently prune subtrees - if node < low, entire left subtree is invalid
Asked in
Facebook 15 Amazon 12 Microsoft 8
156.2K Views
Medium Frequency
~15 min Avg. Time
2.8K Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen