leetcode113题 切片不拷贝结果重复 不正确

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

}

运行结果

img

注释那两行开启结果就会正确 为什么呢?求解答下

因为你只定义了一次切片tmp,你将tmp写入切片res 的之后在重新tmp := make([]int, 0)定义切片tmp就行了