Python 我的leetcode“路径和”算法有什么问题?
我正在leetcode上练习,但在一次测试中被卡住了,无法找出我的错误。任何帮助都将不胜感激 问题: 给定二叉树的根和整数targetSum,如果树有根到叶的路径,则返回true,这样沿路径的所有值相加等于targetSum 叶是没有子节点的节点 例1: 我的代码落在这个测试用例上:Python 我的leetcode“路径和”算法有什么问题?,python,python-3.x,algorithm,Python,Python 3.x,Algorithm,我正在leetcode上练习,但在一次测试中被卡住了,无法找出我的错误。任何帮助都将不胜感激 问题: 给定二叉树的根和整数targetSum,如果树有根到叶的路径,则返回true,这样沿路径的所有值相加等于targetSum 叶是没有子节点的节点 例1: 我的代码落在这个测试用例上: [1,2,3] 5 [1, 2, 3] 4 让我们手动浏览您的代码。我将使用连字符来表示执行过程中给定点上每个变量的状态 First iteration of outer while loop: - s
[1,2,3]
5
[1, 2, 3]
4
让我们手动浏览您的代码。我将使用连字符来表示执行过程中给定点上每个变量的状态
First iteration of outer while loop:
- stack (top -> bottom = left -> right) = empty
- sum1 = 0
- root = node 1
First iteration of inner while loop:
stack.append(node 1)
sum1 = 0 + 1 = 1
root = node 1.left = node 2
Second iteration of inner while loop:
stack.append(node 2)
sum1 = 1 + 2 = 3
root = node 2.left = None (break)
- stack = node 2, node 1
- sum1 = 3
- root = None
sum1 == 5 is false, so do not return "true"
root = None, break
Outside while loop
return "false"
好的,您的代码返回字符串false,但需要一个布尔值false。您需要修复的一个更令人担忧的错误是,只会检查左侧路径。您需要更改内部while循环的逻辑
例如,您会注意到,对于以下测试用例:
[1,2,3]
5
[1, 2, 3]
4
假设修复了返回类型错误,代码将返回false,即使正确的路径和为4。这是因为只有左边的路径1、2被遍历。|请仔细阅读您的代码,并将问题缩小为一个问题。然后问一个具体的问题。为什么我的代码会这样做呢?请重新获取,阅读和。欢迎来到堆栈溢出!