给定一个二叉树 root 和一个整数值 sum,求该树有多少路径的的节点值之和等于 sum
1.该题路径定义不需要从根节点开始,也不需要在叶子节点结束,但是一定是从父亲节点往下到孩子节点 2.总节点数目为n 3.保证最后返回的路径个数在整形范围内(即路径个数小于231-1)
输入:{1,2,3,4,5,4,3,#,#,-1},6
返回值:3
- 暴力穷举
- DFS 到每个节点,再从每个节点开始 DFS 一把
var count = 0
func FindPath(root *TreeNode, sum int) int {
if root == nil {
return count
}
Dfs(root, sum)
FindPath(root.Left, sum)
FindPath(root.Right, sum)
return count
}
func Dfs(root *TreeNode, sum int) {
if root == nil {
return
}
sum -= root.Val
if sum == 0 {
count++
// 这里为什么不 return?
}
// 后边的 Val 可能小于或等于 0
Dfs(root.Left, sum)
Dfs(root.Right, sum)
}