Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在根值范围内添加数字会返回不正确的值_Python_Algorithm_Treenode - Fatal编程技术网

Python 在根值范围内添加数字会返回不正确的值

Python 在根值范围内添加数字会返回不正确的值,python,algorithm,treenode,Python,Algorithm,Treenode,我正在通过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 =

我正在通过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

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

试一试

类解决方案:
def rangeSumBST(self,root:TreeNode,L:int,R:int)->int:
如果root为None或root.valR:
返回0
返回root.val+self.rangeSumBST(root.left,L,R)+self.rangeSumBST(root.right,L,R)

您正停在树的根上。 递归地看这棵树

试一试

类解决方案:
def rangeSumBST(self,root:TreeNode,L:int,R:int)->int:
如果root为None或root.valR:
返回0
返回root.val+self.rangeSumBST(root.left,L,R)+self.rangeSumBST(root.right,L,R)

在Python中,而不是
如果root.val>=L和root.val在Python中,而不是
如果root.val>=L和root.val,但是如果我不想做递归呢?如何修复现有代码?@oo92有帮助吗?但如果我不想执行递归怎么办?如何修复现有代码?@oo92这有帮助吗?
Your input [10,5,15,3,7,null,18] 7 15
Output     10
Expected   32
class Solution:
    def rangeSumBST(self, root, L, R):
        if not root:
            return 0

        summation = 0
        if root.val > L:
            summation += self.rangeSumBST(root.left, L, R)

        if root.val < R:
            summation += self.rangeSumBST(root.right, L, R)

        if L <= root.val <= R:
            summation += root.val

        return summation
class Solution(object):
    def rangeSumBST(self, root, L, R):
        ans = 0
        stack = [root]
        while stack:
            node = stack.pop()
            if node:
                if L <= node.val <= R:
                    ans += node.val
                if L < node.val:
                    stack.append(node.left)
                if node.val < R:
                    stack.append(node.right)
        return ans