路径总和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]
}
复制代码

 

 二叉树的建立:https://www.cnblogs.com/-citywall123/p/16434923.html

posted @   知道了呀~  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2020-06-29 shell编程--awk 、sed 命令介绍
2020-06-29 shell编程----函数、数组
点击右上角即可分享
微信分享提示