func pathSum(root *TreeNode, targetSum int) [][]int {
res := make([][]int, 0)
tmp := make([]int, 0)
var dfs func(root *TreeNode, sum int)
dfs = func(root *TreeNode, sum int) {
if root == nil {
return
}
tmp = append(tmp, root.Val)
if root.Left == nil && root.Right == nil && root.Val == sum {
// a := make([]int, len(tmp))
// copy(a, tmp)
res = append(res, tmp)
}
dfs(root.Right, sum-root.Val)
dfs(root.Left, sum-root.Val)
tmp = tmp[:len(tmp)-1]
}
dfs(root, targetSum)
return res
}
运行结果
注释那两行开启结果就会正确 为什么呢?求解答下