【手把手带你刷LeetCode】——09.二叉搜索树的范围和(递归法)

简介: 二叉搜索树的范围和(递归法)


【前言】

今天是力扣打卡第9天!

Fighting!!


原题:二叉搜索树的范围和

题目描述:

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

示例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

 

题解:

做递归题目就是将每一层执行的递归图画出来,不能懒,画出来去感受,用不了几题,你会发现递归的解法真的很妙。

代码执行:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int rangeSumBST(struct TreeNode* root, int low, int high){
    //方法一:递归法
    //找边界
    if(root == NULL){
        return 0;
    }
    //左子树
    int leftSum = rangeSumBST(root->left, low, high);//有点分治的味儿了
    //右子树
    int rightSum = rangeSumBST(root->right, low, high);
    int result = leftSum + rightSum;
    //判断根节点值
    if(root->val >= low && root->val <= high){
        result += root->val;
    }
    return result;
}

复杂度分析:

时间复杂度:O(N)----二叉搜索树节点的个数

空间复杂度:O(N)----递归调用栈的深度

总结:

今天是力扣打卡第9天!

时光不老,我们不散,咱们明天再见!!

送给每一位为梦想坚持的小友们!!!

 


相关文章
|
3月前
【LeetCode 45】701.二叉搜索树中的插入操作
【LeetCode 45】701.二叉搜索树中的插入操作
19 1
|
3月前
【LeetCode 44】235.二叉搜索树的最近公共祖先
【LeetCode 44】235.二叉搜索树的最近公共祖先
24 1
|
3月前
【LeetCode 48】108.将有序数组转换为二叉搜索树
【LeetCode 48】108.将有序数组转换为二叉搜索树
50 0
|
3月前
【LeetCode 47】669.修剪二叉搜索树
【LeetCode 47】669.修剪二叉搜索树
15 0
|
3月前
【LeetCode 46】450.删除二叉搜索树的节点
【LeetCode 46】450.删除二叉搜索树的节点
27 0
|
3月前
【LeetCode 42】501.二叉搜索树中的众数
【LeetCode 42】501.二叉搜索树中的众数
13 0
|
3月前
【LeetCode 41】530.二叉搜索树的最小绝对差
【LeetCode 41】530.二叉搜索树的最小绝对差
15 0
|
3月前
【LeetCode 40】98.验证二叉搜索树
【LeetCode 40】98.验证二叉搜索树
19 0
|
3月前
【LeetCode 39】700.二叉搜索树中的搜索
【LeetCode 39】700.二叉搜索树中的搜索
25 0
|
5月前
|
算法
LeetCode第96题不同的二叉搜索树
文章介绍了LeetCode第96题"不同的二叉搜索树"的解法,利用动态规划的思想和递推公式,通过计算以任意节点为根的不同二叉搜索树的数量,解决了该问题。
LeetCode第96题不同的二叉搜索树