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
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
💡
Explanation
AI Ready
💡 Suggestion
Tab
to accept
Esc
to dismiss
// Output will appear here after running code