Python BST Range Sum 函数未返回预期结果将使用局部变量

Python BST Range Sum Function Not Returning Expected Results Will Using Local Variable

提问人: 提问时间:10/19/2023 更新时间:10/19/2023 访问量:22

问:

我目前正在开发一个 Python 函数,该函数应该计算给定范围内二叉搜索树 (BST) 中的值总和。但是,我的代码似乎没有按预期工作。我希望能得到一些关于可能出错的指导。

这是我正在使用的类的代码:Solution

class Solution:
    def rangeSumBST(self, root, low: int, high: int) -> int:
        def dfs(root):
            if root is None:
                return 0
            c = 0
            if low <= root.val <= high:
                c += root.val
            dfs(root.left)
            dfs(root.right)
            return c
        return dfs(root)

这个想法是在 BST 上执行深度优先搜索 (DFS),如果它们落在给定范围 ( to ) 内,则将值添加到总和中。但是,它没有返回正确的结果。clowhigh

我试图调试此代码,但我无法弄清楚导致问题的原因。我的实现中是否遗漏了某些明显的东西,或者我的代码中是否存在导致错误结果的逻辑错误?

解决此问题的任何帮助或建议将不胜感激。提前致谢!

python 递归 binary-search-tree 局部变量

评论


答:

0赞 blhsing 10/19/2023 #1

您的代码正在调用,但未对返回值执行任何操作。您应该将它们添加到总和中:dfs

class Solution:
    def rangeSumBST(self, root, low: int, high: int) -> int:
        def dfs(root):
            if root is None:
                return 0
            c = dfs(root.left) + dfs(root.right)
            if low <= root.val <= high:
                c += root.val
            return c
        return dfs(root)