思路:根左右递归遍历每个节点,每个节点都当做根节点进行根左右递归遍历看是否存在路径和为target的路劲,有的话则res+1
var res int
var target int
func pathSum(root *TreeNode, targetSum int) int {
target = targetSum
dfsTree(root)
returnR := res
res = 0
target = 0
return returnR
}
func dfsTree(root *TreeNode) {
if root == nil {
return
}
checkNodeIsSuccess(root)
dfsTree(root.Left)
dfsTree(root.Right)
}
func checkNodeIsSuccess(node *TreeNode) {
recursiveNodeValue(node, 0)
}
func recursiveNodeValue(node *TreeNode, sum int) {
if node == nil {
return
}
sum += node.Val
if sum == target {
res++
}
recursiveNodeValue(node.Left, sum)
recursiveNodeValue(node.Right, sum)
}