思路:
需要将不满足范围的节点删除,
若当前root小于范围,则将右子树(需要递归做相同处理)传给上一层,以此删除当前root,
若当前root大于范围,则将左子树(需要递归做相同处理)传给上一层,以此删除当前root,
返回值:并不在终止条件中进行删除,直接返回null
Java实现:
class Solution {
public TreeNode trimBST(TreeNode root, int low, int high) {
// BST模板
if(root==null){
return null;
}
// 类似前序遍历 / 终止条件
if(root.val<low){ //root小于low,不满足范围,则将整个右子树递归交给上一层 !
TreeNode right=trimBST(root.right,low,high);
return right; // 返回右子树给上一层
}
if(root.val>high){ //root大于high,不满足范围,则将整个左子树递归的结果交给上一层 !
TreeNode left=trimBST(root.left,low,high);
return left; // 返回左子树给上一层
}
// root满足范围时
root.right=trimBST(root.right,low,high); // 接住返回的子树
root.left=trimBST(root.left,low,high);
return root;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/89273.html