【发布时间】:2016-10-12 15:09:32
【问题描述】:
我想检查从起始节点到任何路径中的值的总和
叶节点存在。
例如,假设我的 startNode 是 7,而 sumTarget 是 15,如果树是:
a-7
b - 1 e- 8
c - 2
d -9
那么由于 7 +8 等于 15 它会返回 true
如果我有 b 作为 startNode,12 作为 sumTotal,那么它也会返回 true,因为 1 +2 + 9 是 12,从 b 开始。
class Node {
int value;
Node [] children
}
我不认为这是对的,但我不确定哪里错了。
def doesSumExist(startNode, sumTarget, currentSum):
totalSum = sumTarget
if startNode is not Null:
if totalSum + startNode.value == sumTarget:
return True
else:
totalSum += startNode.value
else:
Node startNode = doesSumExist(startNode.left, sumTarget, currentSum)
if startNode is not Null:
return currentSum
startNode = doesSumExist(startNode.right, sumTarget,currentSum)
return False
【问题讨论】:
-
什么是startNode.left和startNode.right?孩子们?您没有检查递归调用的返回值。您需要传递参数 currentSum 而不是每次都擦除 sumTarget。您不想检查是否 totalSum == startNode.value。您想检查是否 totalSum+startNode.value == sumTarget。您不想分配 totalSum = sumTarget。您想传递一个名为 currentSum 的参数(如我之前所说)。这个递归函数需要 3 个参数。如果您向我解释您使用的结构,我将能够更好地帮助您。
-
是的 startNode.left 和 startNode.right 是孩子。我编辑了帖子以包含示例树和数字,并且还根据您的建议修改了代码。谢谢你的帮助。 else: totalSum += startNode.value 应该改为 totalSum+= startNode.left 还是 startNode.right?
标签: python data-structures binary-tree