LeetCode 938 - Range Sum of BST (Easy)
Given the root node of a binary search tree, return the sum of values of all nodes with a value in the range [low, high].
Example 1:
Input: root = [10,5,15,3,7,null,18], low = 7, high = 15 Output: 32
Example 2:
Input: root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10 Output: 23
Constraints:
- The number of nodes in the tree is in the range
[1, 2 * 104]. 1 <= Node.val <= 1051 <= low <= high <= 105- All
Node.valare unique.
方法:一开始没有仔细审题,没有用到BST的特性,用了最straightforward的方法来做dfs。
time complexity: O(N) space complexity :O(N)
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def rangeSumBST(self, root: TreeNode, low: int, high: int) -> int: if not root: return 0 self.values = 0 self.dfs(root, low, high) return self.values def dfs(self, root, low, high): if not root: return if low <= root.val <= high: self.values+= root.val self.dfs(root.left, low, high) self.dfs(root.right, low, high)
方法二:利用了BST特性的
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def rangeSumBST(self, root: TreeNode, low: int, high: int) -> int: if not root: return 0 if root.val > high: return self.rangeSumBST(root.left, low, high) elif root.val < low: return self.rangeSumBST(root.right, low, high) else: return root.val + self.rangeSumBST(root.left, low, high) + self.rangeSumBST(root.right, low, high)
浙公网安备 33010602011771号