Given a binary search tree and the lowest and highest boundaries as `L`and `R`, trim the tree so that all its elements lies in `[L, R]` (R >= L). You might need to change the root of the tree, so the result should return the new root of the trimmed binary search tree.
Example 1
Input: 1 / 0 2 L = 1 R = 2 Output: 1 2
Example 2:
Input: 3 / 0 4 2 / 1 L = 1 R = 3 Output: 3 / 2 / 1
给出的是二叉搜索树,先复习下什么是二叉搜索树
- 1.也就说一个根节点只有两个子树
- 2.左子树 < 根节点 < 右子树
题目的大概意思就是删除`[L, R]`
范围外的节点
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public TreeNode trimBST(TreeNode root, int L, int R) { if(root == null || L > R) return null; //递归的出口 if(root.val < L)return trimBST(root.right,L,R); if(root.val > R)return trimBST(root.left,L,R); root.left = trimBST(root.left,L,R); root.right = trimBST(root.right,L,R); return root; } }
时间: 2024-10-10 20:38:38