题解 | #二叉树中和为某一值的路径(三)#

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

https://www.nowcoder.com/practice/965fef32cae14a17a8e86c76ffe3131f

package main
import _"fmt"
import . "nc_tools"
/*
 * type TreeNode struct {
 *   Val int
 *   Left *TreeNode
 *   Right *TreeNode
 * }
 */

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param root TreeNode类 
 * @param sum int整型 
 * @return int整型
*/
func FindPath( root *TreeNode ,  sum int ) int {
    ans:=0
  //一个节点只访问一次,记忆化搜索
    vis:=map[*TreeNode]bool{}
    var order func(*TreeNode,int)
    order=func(root *TreeNode,carry int){
        if root==nil{
            return
        }
        carry-=root.Val
        if carry==0{
            ans++
        }
        if root.Left!=nil{
            order(root.Left,carry)
            if _,ok:=vis[root.Left];!ok{
                vis[root.Left]=true
                order(root.Left,sum)
            }
        }
        if root.Right!=nil{
            order(root.Right,carry)
            if _,ok:=vis[root.Right];!ok{
                vis[root.Right]=true
                order(root.Right,sum)
            }
        }
    }
    vis[root]=true
    order(root,sum)
    return ans
}

全部评论

相关推荐

点赞 评论 收藏
分享
吴offer选手:我卡在笔试才是最好笑的,甚至没给我发过笔试链接
投递哔哩哔哩等公司6个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务