Java教程

路径总和II

本文主要是介绍路径总和II,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

 https://leetcode.cn/problems/path-sum-ii/

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func pathSum(root *TreeNode, targetSum int) [][]int {
    stack:=make([]int,0)
    ways=make([][]int,0)
    dfs(root,0,targetSum,stack)
    return ways
}
var ways [][]int
func dfs(now *TreeNode,ans,target int,stack []int){
    if now==nil{//递归出口,可能有正数,也可能有负数
        return 
    }
   
    ans=ans+now.Val
    stack=append(stack,now.Val)
    if ans==target&&now.Left==nil&&now.Right==nil{//只有到叶子节点,并且和为target才可以
        tmp:=make([]int,len(stack))
        copy(tmp,stack)
        ways=append(ways,tmp)
    }
    dfs(now.Left,ans,target,stack)
    dfs(now.Right,ans,target,stack)
    ans=ans-now.Val
    stack=stack[:len(stack)-1]
}

 

这篇关于路径总和II的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!