描述
给定一个二叉树root和一个整数值 sum ,求该树有多少路径的的节点值之和等于 sum。
1. 该题路径定义不需要从根节点开始,也不需要在叶子节点结束,但是一定是从父亲节点往下到孩子节点
2. 总节点数目为n
3. 保证最后返回的路径个数在整形范围内(即路径个数小于2^31-1)
数据范围:
- 0 < = n < = 1000 0<=n<=1000 0<=n<=1000
- − 1 0 9 < = 节点值 < = 1 0 9 −10^{9}<=节点值<=10^{9} −109<=节点值<=109
假如二叉树root为{1,2,3,4,5,4,3,#,#,-1},sum=6,那么总共如下所示,有3条路径符合要求
示例1
输入:{1,2,3,4,5,4,3,#,#,-1},6
返回值:3
说明:如图所示,有3条路径符合
示例2
输入:{0,1},1
返回值:2
示例3
输入:{1,#,2,#,3},3
返回值:2
package main
import . "nc_tools"
/*
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @param sum int整型
* @return int整型
*/
var res = 0
func dfs(root *TreeNode, sum int) {
if root == nil {
return
}
if sum == root.Val {
res++
}
dfs(root.Left, sum-root.Val)
dfs(root.Right, sum-root.Val)
}
func FindPath(root *TreeNode, sum int) int {
// write code here
if root == nil {
return res
}
dfs(root, sum)
FindPath(root.Left, sum)
FindPath(root.Right, sum)
return res
}
个人解题链接:
题解 | #二叉树中和为某一值的路径(三)#_牛客网