LeetCode669-修剪二叉搜索树

题目链接

英文链接:https://leetcode.com/problems/trim-a-binary-search-tree/

中文链接:https://leetcode-cn.com/problems/trim-a-binary-search-tree/

题目详述

给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。

示例 1:

1
2
3
4
5
6
7
8
9
10
11
12
输入: 
1
/ \
0 2

L = 1
R = 2

输出:
1
\
2

示例 2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
输入: 
3
/ \
0 4
\
2
/
1

L = 1
R = 3

输出:
3
/
2
/
1

题目详解

按二叉搜索树的性质修剪即可。

1
2
3
4
5
6
7
8
9
10
11
public class LeetCode_00669 {

public TreeNode trimBST(TreeNode root, int L, int R) {
if (root == null) 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;
}
}