首页 > 其他 > 详细

LeetCode每日刷题-938. 二叉搜索树的范围和

时间:2021-04-27 14:19:50      阅读:23      评论:0      收藏:0      [点我收藏+]

938. 二叉搜索树的范围和

今天的这道题我居然很快就理解做出来了,叉会腰。

题目:

给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。
来源:LeetCode

示例1:

技术分享图片

 

输入:root = [10,5,15,3,7,null,18], low = 7, high = 15
输出:32

 

 示例2:

技术分享图片

 

 

 

 

输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10
输出:23

别看题目似乎很复杂,其实很好理解,我们从这棵树找到的点看下图:

以示例一为例子:

low = 7, high = 15

技术分享图片

 

 

 

 那么红框部分就是我们需要找到的[7,15]结点,相加输出32,那么该如何判断呢?

参考官方思路采用深度优先搜索,记当前子树根节点为root,分情况判断(三种情况),最后输出结点相加的和。

第一种情况,root为空,输出0即可

当前子树结点>high时说明不需要看右子树,将左子树相加:

技术分享图片

 

 

当前子树结点<low时说明不需要看左子树,将右子树相加。

技术分享图片

 

最后输出根+左子树范围和+右子树范围和即可

 代码实现(JavaScript):

var rangeSumBST = function(root, low, high) {
if(!root){
    return 0;
}
if(root.val>high){
    return rangeSumBST(root.left,low,high);
}
if(root.val<low){
    return rangeSumBST(root.right,low,high);
}
return root.val + rangeSumBST(root.left,low,high) + rangeSumBST(root.right,low,high);
};

技术分享图片

 

LeetCode每日刷题-938. 二叉搜索树的范围和

原文:https://www.cnblogs.com/yesimola/p/14708405.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!