其他分享
首页 > 其他分享> > JZ24 二叉树中和为某一值的路径

JZ24 二叉树中和为某一值的路径

作者:互联网

二叉树中和为某一值的路径

输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。

 解题思路: 递归回溯的解法

1.按照前序方式去遍历(根,左,右)
2.递归处理:

 
func helper(root *TreeNode ,  expectNumber int, arr []int, ret *[][]int) {
    if root == nil {
        return
    }
    arr = append(arr, root.Val)
    if root.Val == expectNumber && root.Left == nil && root.Right == nil {
        tmp := make([]int, len(arr))
        copy(tmp, arr)
        *ret = append(*ret, tmp)
    }
    helper(root.Left, expectNumber - root.Val, arr, ret)
    helper(root.Right, expectNumber - root.Val, arr, ret)
    
    arr = arr[:len(arr)-1]
}

func pathSum( root *TreeNode,  expectNumber int ) [][]int {
    if root == nil {
        return nil
    }
    var ret [][]int
    helper(root, expectNumber, []int{}, &ret)
    return ret
}

 

 

标签:arr,nil,int,JZ24,ret,expectNumber,二叉树,root,一值
来源: https://www.cnblogs.com/dingxiaoqiang/p/14635548.html