给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和。

二叉搜索树保证具有唯一的值。

示例 1:

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

示例 2:

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

提示:

树中的结点数量最多为 10000 个。
最终的答案保证小于 2^31。

————————
解题思路:题目的意思是节点值大于等于L同时小于等于R的总和,因为该树是二叉搜索树,所以某一节点左子树的所有节点值小于该节点值,某一节点的右子树的所有节点值大于等于该节点值。

如果节点的值小于L,则只考虑其右子树的情况;如果节点的值大于R,则只考虑其左子树的情况。使用递归得到其C++代码,时间复杂度为O(n)O(n)O(n),空间复杂度为O(H)O(H)O(H),H是二叉树的高度。

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {public:int rangeSumBST(TreeNode* root, int L, int R) {int ans = 0;if(root==NULL)  // 如果节点为空,返回0return 0;else if(root->val>=L && root->val<=R)  // 如果节点在L和R之间,需要同时考虑左子树和右子树{ans = ans + root->val + rangeSumBST(root->right, L, R) + rangeSumBST(root->left, L, R);}else if(root->val < L)  // 如果节点值小于L则只考虑右子树ans = ans + rangeSumBST(root->right, L, R);else if(root->val > R)  // 如果节点值大于R则只考虑左子树ans = ans + rangeSumBST(root->left, L, R);return ans;}
};

leetcode —— 938. 二叉搜索树的范围和相关推荐

  1. LeetCode 938. 二叉搜索树的范围和(二叉树遍历+搜索剪枝)

    文章目录 1. 题目 2. 解题 递归+剪枝 中序遍历循环+剪枝 1. 题目 给定二叉搜索树的根结点 root,返回 L 和 R(含)之间的所有结点的值的和. 题目的意思,节点的值在[L, R]这个区 ...

  2. leetcode 530. 二叉搜索树的最小绝对差(Java版)

    题目 https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/ 题解 中序遍历法. 本题要求二叉搜索树任意两节点差的绝对 ...

  3. leetcode 235. 二叉搜索树的最近公共祖先(Java版,树形dp套路)

    题目 原题地址:leetcode 235. 二叉搜索树的最近公共祖先 说明: 所有节点的值都是唯一的. p.q 为不同节点且均存在于给定的二叉搜索树中. 题解 关于 树形dp 套路,可以参考我的另一篇 ...

  4. LeetCode 1586. 二叉搜索树迭代器 II(数组+栈)

    文章目录 1. 题目 2. 解题 1. 题目 实现二叉搜索树(BST)的中序遍历迭代器 BSTIterator 类: BSTIterator(TreeNode root) 初始化 BSTIterato ...

  5. LeetCode 783. 二叉搜索树结点最小距离(中序遍历)

    1. 题目 给定一个二叉搜索树的根结点 root, 返回树中任意两节点的差的最小值. 示例:输入: root = [4,2,6,1,3,null,null] 输出: 1 解释: 注意,root是树结点 ...

  6. LeetCode 173. 二叉搜索树迭代器(中序遍历)

    文章目录 1. 题目信息 2. 二叉树中序遍历 1. 题目信息 实现一个二叉搜索树迭代器.你将使用二叉搜索树的根节点初始化迭代器. 调用 next() 将返回二叉搜索树中的下一个最小的数. 示例: B ...

  7. leetcode —— 235. 二叉搜索树的最近公共祖先

    给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q 的祖 ...

  8. Leetcode 235.二叉搜索树的最近公共祖先

    Time: 20190907 Type: Easy 题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p. ...

  9. Leetcode 173. 二叉搜索树迭代器 解题思路及C++实现

    解题思路: 使用中序遍历,将二叉搜索树的所有节点值依次push进队列中.每调用依次next函数,即返回队首元素,并pop.hasNext函数只需判断队列是否为空即可. /*** Definition ...

最新文章

  1. mac下常用快捷键整理
  2. vue data 值如何渲染_Vue执行流程解析
  3. MyBatis逆向工程自动生成代码(附数据库表结构)
  4. 3周第4次课 df、du命令 fdisk磁盘分区
  5. webrtc简单案例——音视频采集和播放
  6. 疯狂为《英伟达深度学习学院半日免费初级课程》打Call
  7. netsh命令恢复网络_实例的状态检查和自动恢复
  8. java oracle分页查询语句_oracle分页查询语句,java得到分页查询语句的方法
  9. matlab mxarray赋值,C++中数组与MATLAB mxArray相互赋值
  10. 【99JS手记】之一:nth-child选择器
  11. 《nik collection》怎么安装
  12. 华硕主板如何设置开机自启_教你华硕主板bios怎么设置硬盘启动
  13. 在Edge(Chrome内核)中设置使用Google搜索并设置点击搜索结果默认打开新的标签页
  14. 局域网共享文件夹/共享文件夹无法访问解决办法
  15. GlusterFs安装部署文档
  16. JavaScript实现拖动图片到指定位置验证码
  17. L1-048 矩阵A乘以B
  18. 原创小说 - 爱人失踪(第一部)
  19. 用Latex编辑数学公式
  20. 马化腾在3Q大战后写给腾讯全体员工的一封信

热门文章

  1. 面试官系统精讲Java源码及大厂真题 - 25 整体设计:队列设计思想、工作中使用场景
  2. Docker教程(二) Docker环境安装
  3. JSF Spring Hibernate集成示例教程
  4. Hibernate多对多映射 - 连接表
  5. Linux 使用grep过滤多个条件及grep常用过滤命令
  6. Suggestion [3,General]: 找不到命令 webpack,但它确实存在于当前位置。默认情况下,Windows PowerShell 不会从当前位置加载命令。如果信任此命令,请改为键
  7. 【Python】画一个心形
  8. C#LeetCode刷题之#404-左叶子之和​​​​​​​​​​​​​​(Sum of Left Leaves)
  9. sqlachemy入门基础手册
  10. python 添加数据库表_通过时间表(Python库)简化复杂的计划