在python中,根到叶的路径和等于给定的数字

2024-10-03 02:37:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我用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)

Tags: selfrightnonenodedatareturnifdef
1条回答
网友
1楼 · 发布于 2024-10-03 02:37:26

简而言之:不

更长的答案:语句currSum = currSum + node.data是唯一对currSum进行任何更改的语句,并不是更改该变量所引用的对象;相反,它创建了一个新的对象并使curium指向它。由于这个变量不同于从调用者传递的参数(即引用相同对象的different变量),因此这些更改对参数没有影响。在

相关问题 更多 >