本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!