可用递归法:
- 如果root.val小于边界值low,则root的左子树必然也小于low,只需递归处理root.right;
- 如果root.val大于边界值high,则root右子树必然也大于high,只需递归处理root.left ;
- 如果root.val在范围内,则root被保留,分别递归处理root.left和root.right。
实现代码如下:
class Solution {
public TreeNode trimBST(TreeNode root, int low, int high) {
if(root==null) {
return root;
}
if(root.val<low) {
return trimBST(root.right,low,high);
}
else if(root.val>high) {
return trimBST(root.left,low,high);
}
else {
root.left=trimBST(root.left,low,high);
root.right=trimBST(root.right,low,high);
}
return root;
}
}