在递归函数Recursion
中,有两处错误的地方:
- 第一个问题是在以下代码行:
Recursion(root.Left, targetSum, 0)
这里应该是递归调用右子树,而不是左子树。应该改为:
Recursion(root.Right, targetSum, curSum)
- 第二个问题是在以下代码行:
Recursion(root.Right, targetSum, 0)
这里应该也是递归调用左子树,而不是右子树。应该改为:
Recursion(root.Left, targetSum, curSum)
修正后的代码如下所示:
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
var result int
func Recursion(root *TreeNode, targetSum, curSum int) {
if root == nil {
return
}
curSum += root.Val
if curSum == targetSum {
result++
}
Recursion(root.Left, targetSum, curSum)
Recursion(root.Left, targetSum, 0)
Recursion(root.Right, targetSum, curSum)
Recursion(root.Right, targetSum, 0)
}
func pathSum(root *TreeNode, targetSum int) int {
result = 0
Recursion(root, targetSum, 0)
return result
}
这样修正后,函数应该能够正确计算路径和等于目标值的路径数量。
内容由零声教学AI助手提供,问题来源于学员提问