Python 在根值范围内添加数字会返回不正确的值
我正在通过LeetCode进行工作,这个问题一直困扰着我。给我一个二叉搜索树的根节点,要求我返回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 =
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