题目链接
思路
- 若
root.val
小于边界值low
,则root
的左子树必然均小于边界值,我们递归处理root.right
即可; - 若
root.val
大于边界值high
,则root
的右子树必然均大于边界值,我们递归处理root.left
即可; - 若
root.val
符合要求,则root
可被保留,递归处理其左右节点并重新赋值即可。
代码
class Solution {
public TreeNode trimBST(TreeNode root, int low, int high) {
if(root == null){
return null;
}
if(root.val < low){
return trimBST(root.right, low, high);
}else if(root.val > high){
return trimBST(root.left, low, high);
}
root.left = trimBST(root.left, low, high);
root.right = trimBST(root.right, low, high);
return root;
}
}
标签:val,669,边界值,DFS,high,low,trimBST,root,LeetCode
From: https://www.cnblogs.com/shixuanliu/p/17114505.html