我用python为这个问题编写了下面的代码,似乎可以工作。在
我知道在python中,所有东西都绑定到一个对象上。因此,在这种情况下,当我们返回递归堆栈时,currSum
是否会反映更新后的值(我的意思是说,在完成对左边的递归之后,我们继续处理右子元素)?在
class Node:
def __init__(self,data):
self.data = data
self.left = None
self.right = None
def RootToLeafSum(node,currSum, targetSum):
if node == None:
return False
currSum = currSum + node.data
if node.left == None and node.right == None: #leafNode
return currSum == targetSum
LS = RootToLeafSum(node.left,currSum,targetSum)
RS = RootToLeafSum(node.right,currSum,targetSum)
return LS or RS
n1 = Node(1)
n2 = Node(2)
n3 = Node(3)
n4 = Node(4)
n5 = Node(5)
n1.left = n2
n1.right = n3
n2.left = n4
n2.right = n5
print RootToLeafSum(n1,0,4)
简而言之:不
更长的答案:语句
currSum = currSum + node.data
是唯一对currSum
进行任何更改的语句,并不是更改该变量所引用的对象;相反,它创建了一个新的对象并使curium
指向它。由于这个变量不同于从调用者传递的参数(即引用相同对象的different变量),因此这些更改对参数没有影响。在相关问题 更多 >
编程相关推荐