给定二叉搜索树的根结点 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. 形态数轴上的反密码子和氨基酸
  2. 照片快照清除 android,如何在Android中删除和恢复照片
  3. python读取文件夹下所有文件名_python如何获取当前文件夹下所有文件名详解
  4. 20145321 实验三实验报告
  5. 电脑字体变成繁体中文怎么更改过来呢
  6. 手把手教你电脑下载b站视频
  7. 13个Python必备的知识,建议收藏
  8. QCC3040 BLE bonding相关配置
  9. ecshop分销说明
  10. 【降维打击】解决加密视频录屏问题
  11. 双纤网速叠加+GS105E实现单线三用+AC86+68组网Aimesh实现无线漫游
  12. 从三字经看古代幼儿教育
  13. 前辈们整理的SAP的相关链接
  14. Power bi 4.14 桑基图
  15. poi给Word添加“下一页”
  16. 新开淘宝店铺如何推广运营
  17. ag-grid 学习
  18. 【连载】从单片机到操作系统⑥——FreeRTOS任务切换机制详解
  19. 杭州seo优化月底工作总结
  20. Linux安全之关闭不需要的端口

热门文章

  1. C++实用技巧(一) - λ-calculus(惊愕到手了欧耶,GetBlogPostIds.aspx) - C++博客
  2. 在Spring中使用JDBC访问关系数据
  3. 容器编排技术 -- Kubernetes kubectl annotate 命令详解
  4. mybatis parametertype 多个参数
  5. Java对象运行时在内存中的情况
  6. HanLP《自然语言处理入门》笔记--5.感知机模型与序列标注
  7. java Set无序集合 HashSet 的对象元素唯一性
  8. 【Java】利用Swing实现登录页面
  9. C#算法设计排序篇之06-堆排序(附带动画演示程序)
  10. jemter的竞品分析