188.Range Sum of BST

2024-05-12 00:38
文章标签 range sum 188 bst

本文主要是介绍188.Range Sum of BST,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目

Given the root node of a binary search tree, return the sum of values of all nodes with value between L and R (inclusive).

The binary search tree is guaranteed to have unique values.

Example 1:

Input: root = [10,5,15,3,7,null,18], L = 7, R = 15
Output: 32
Example 2:

Input: root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10
Output: 23

链接

https://leetcode.com/problems/range-sum-of-bst/

分析

首先二分查找树的原理就是左子树上所有的值都比 root 小,右子树上所有的值都比 root 大;
题目的意思是从二分查找树上找到所有给定L 和 R 的节点的值累加和;
简化为找到所有在 L 和 R 之间的数字;
采用递归的思想实现.

code

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution(object):def rangeSumBST(self, root, L, R):""":type root: TreeNode:type L: int:type R: int:rtype: int""""""首先二分查找树的原理就是左子树上所有的值都比 root 小,右子树上所有的值都比 root 大;题目的意思是从二分查找树上找到所有给定L 和 R 的节点的值累加和;简化为找到所有在 L 和 R 之间的数字;采用递归的思想实现,(1)如果 root 在 L 和 R 之间,则 root 为所找的元素;然后分别递归左子树和右子树;(2)如果 root >= R, 则右子树上的 node 肯定不符合规则,只需要递归左子树;(3)如果 root <= L, 则左子树上的 node 肯定不符合规则,只需要递归右子树;(4)特殊情况,root == None,返回0作为递归结束条件。"""if root == None:return 0sum = 0if L < root.val and root.val < R:sum = root.valsum += self.rangeSumBST(root.left, L, R)sum += self.rangeSumBST(root.right, L, R)elif root.val >= R:if root.val == R:sum = root.valsum += self.rangeSumBST(root.left, L, R)else:if root.val == L:sum = root.valsum += self.rangeSumBST(root.right, L, R)     return sum

这篇关于188.Range Sum of BST的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/981110

相关文章

最大流=最小割=最小点权覆盖集=sum-最大点权独立集

二分图最小点覆盖和最大独立集都可以转化为最大匹配求解。 在这个基础上,把每个点赋予一个非负的权值,这两个问题就转化为:二分图最小点权覆盖和二分图最大点权独立集。   二分图最小点权覆盖     从x或者y集合中选取一些点,使这些点覆盖所有的边,并且选出来的点的权值尽可能小。 建模:     原二分图中的边(u,v)替换为容量为INF的有向边(u,v),设立源点s和汇点t

如何导入sun.misc.BASE64Encoder和sum.misc.BASE64Decoder

右击项目名--->Build Path--->Configure Build Path...--->java Build Path--->Access rules:1 rule defined,added to all librar...   --->Edit --->Add...

18. 4 Sum

题目: 解答: 与之前的三数之和的解法类似,也是先排序,然后不断剔除不可能的条件,最后两个参数,通过两头求和计算得出。 代码: class Solution {public:vector<vector<int>> fourSum(vector<int>& nums, int target) {vector<vector<int>> result;int len = nums.size

apt-get update更新源时,出现“Hash Sum mismatch”问题

转载自:apt-get update更新源时,出现“Hash Sum mismatch”问题 当使用apt-get update更新源时,出现下面“Hash Sum mismatch”的报错,具体如下: root@localhost:~# apt-get update ...... ...... W: Failed to fetch http://us.archive.ubuntu.com/ub

MySql 1264 - Out of range value for column 异常

前段时间操作数据库,本是一个很简单的修改语句,却报了  1264 - Out of range value for column字段类型官网  当时一看懵逼了,网上很多都说是配置的问题,需要修改my.ini文件,这个方式我没有试过,我想肯定还有其它方法,经过慢慢排 查发现表里的字段为 decimal(10,3) ,这说明小数点前只有7位,保留了3位小数点,而值在小数点前却有8位,这就导致了错误

ON_COMMAND_RANGE 和 ON_UPDATE_COMMAND_UI_RANGE

 ON_COMMAND_RANGE 和 ON_UPDATE_COMMAND_UI_RANGE 可以影射ID连续的Toolbar/Menu ID。 ON_COMMAND_RANGE影射的消息响应函数需要一个参数UINT表明是哪一个消息, afx_msg void OnZoom(UINT nID); 而ON_UPDATE_COMMAND_UI_RANGE的消息响应函数则无此ID,与ON

on command range

 ON_COMMAND_RANGEON_COMMAND_RANGE( id1, id2, memberFxn )参数: id1一个连续范围的命令ID的起始值。id2一个连续范围的命令ID的结束值。memberFxn该命令被映射到的消息处理函数的名字。 说明:使用这个宏把一个连续范围的命令ID映射到单个命令处理函数。ID的范围从id1开始,到id2结束。用ON_COMMAND_RAN

ON_COMMAND_RANGE的用法

 今天主要介绍一下ON_COMMAND_RANGE的用法 第一次用这个方法还是刚毕业那会,那时写过一个控制程序,界面上有很多电器的控制按钮,这些按钮的响应函数基本一致,只是相应的ID值不一样,要是一一写响应函数那不累死人,于是就东找西找,找到ON_COMMAND_RANGE。 最近一个偶然机会也要用到它,三下五除二,CODE写完了, 1.在要添加的工程上添加函数afx_msg vo

深入理解二叉搜索树(BST)

一棵二叉搜索树(BST)是以一棵二叉树来组织的,可以用链表数据结构来表示,其中,每一个结点就是一个对象,一般地,包含数据内容key和指向孩子(也可能是父母)的指针属性。如果某个孩子结点不存在,其指针属性值为空(NIL)。 二叉搜索树中的关键字key的存储方式总是满足二叉搜索树的性质: 设x是二叉搜索树中的一个结点。如果y是x左子树中的一个结点,那么会有y.key<=x.key;如果y是x右子树

[LeetCode] 303. Range Sum Query - Immutable

题:https://leetcode.com/problems/range-sum-query-immutable/description/ 题目 Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive. Example: Given nums