题解 | #二叉树根节点到叶子节点和为指定值的路径#

二叉树根节点到叶子节点和为指定值的路径

http://www.nowcoder.com/practice/840dd2dc4fbd4b2199cd48f2dadf930a

package main
import . "nc_tools"

//递归,别想迭代了,空间不如,还贼复杂,递归才是通法
var res [][]int
func pathSum( root *TreeNode ,  sum int ) [][]int {
    res = [][]int{}
    path := []int{}
    dfs(root, sum, path)

    return res
}

func dfs(root *TreeNode, sum int, path []int) {
    if root == nil {
        return
    }

    path = append(path, root.Val)

    if root.Left == nil && root.Right == nil && root.Val == sum {
        tmp := make([]int, len(path))
        copy(tmp, path)
        res = append(res, tmp)
    }

    dfs(root.Left, sum - root.Val, path)
    dfs(root.Right, sum - root.Val, path)
}
全部评论

相关推荐

头像
昨天 15:00
已编辑
算法工程师
点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务