938. Range Sum of BST

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

solution

类似树的直径写法

class Solution:
    def __init__(self):
        self.res = 0

    def rangeSumBST(self, root: Optional[TreeNode], low: int, high: int) -> int:
        self.dfs(root, low, high)
        return self.res

    def dfs(self, root, low, high):
        if not root:
            return 0

        if root.val < low:
            self.dfs(root.right, low, high)
        elif root.val > high:
            self.dfs(root.left, low, high)
        else:
            self.res += root.val
            self.dfs(root.left, low, high)
            self.dfs(root.right, low, high)
  • 以下两种方法有助于加深对递归和BST理解

时间复杂度:O(n) 空间复杂度:O(h)

Last updated