计算范围内 BST 的总和

Calculate Sum of BST in a Range

谁能告诉我我的代码有什么问题。它的 returning 25 用于测试用例 给定一棵二叉搜索树的根节点,return所有节点的值在L和R之间(含)的值之和。

二叉搜索树保证具有唯一值。 输入:root = [10,5,15,3,7,null,18], L = 7, R = 15 输出:32 我的 output:25

class Solution:
    def rangeSumBST(self, root: TreeNode, L: int, R: int) -> int:
        self.sum1=0
        self.traverse(root,L,R)
        return self.sum1
    def traverse(self,node,L,R):
        if node:
            if L<=node.val<=R:
                self.sum1+=node.val
                if L<node.val:
                    self.traverse(node.left,L,R)
                if node.val<R:
                    self.traverse(node.right,L,R)

仅当当前 node.value 位于范围 lr 之间时,您才调用 left childright child。即使 node.value 不在 lr 之间,您也已调用它们。

因此,在 traverse() 方法中更改 if 块的 indentation
检查下面的代码。

class Solution:
    def rangeSumBST(self, root: TreeNode, L: int, R: int) -> int:
        self.sum1=0
        self.traverse(root,L,R)
        return self.sum1
    def traverse(self,node,L,R):
        if node:
            if L<=node.val<=R:
                self.sum1+=node.val
            if L<node.val:
                self.traverse(node.left,L,R)
            if node.val<R:
                self.traverse(node.right,L,R)