一、题目描述
给定一个二叉搜索树,同时给定最小边界L
和最大边界 R
。通过修剪二叉搜索树,使得所有节点的值在[L, R]
中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。
示例 1:
1 | 输入: |
示例 2:
1 | 输入: |
二、题解
1.递归
1.1 思路
完全参考官方题解,这个方法太巧妙了,学习了!
思路
令 trim(node) 作为该节点上的子树的理想答案。我们可以递归地构建该答案。
算法
当 node.val > R,那么修剪后的二叉树必定出现在节点的左边。
类似地,当node.val < L,那么修剪后的二叉树出现在节点的右边。否则,我们将会修剪树的两边。
1.2 代码
1 | /** |