首页 > 解决方案 > 在根值范围内添加数字会返回不正确的值

问题描述

我正在通过 LeetCode 工作,这个问题让我陷入困境。给我一个二叉搜索树的根节点,并要求我返回介于两者之间的所有值的L总和R

例子:

Input: root = [10,5,15,3,7,null,18], L = 7, R = 15
Output: 32 (10+15+7)

这是我的尝试:

class Solution:

    def rangeSumBST(self, root: TreeNode, L: int, R: int) -> int:
        value = 0
        
        if root.val >= L and root.val <= R:
            value += root.val
        
        return value

但是,这就是它返回的内容:

Your input [10,5,15,3,7,null,18] 7 15
Output     10
Expected   32

标签: pythonalgorithmtreenode

解决方案


你停在树的根部。递归地查看树。

尝试

class Solution:
    def rangeSumBST(self, root: TreeNode, L: int, R: int) -> int:
        if root is None or root.val < L or root.val > R:
            return 0
        return root.val + self.rangeSumBST(root.left, L, R) + self.rangeSumBST(root.right, L, R)

推荐阅读