lc-go/solutions/4/q437/solution.go
2026-01-25 11:56:12 +09:00

36 lines
656 B
Go

package q437
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
func count(node *TreeNode, prefix []int, target int) int {
if node == nil {
return 0
}
if len(prefix) > 0 {
prefix = append(prefix, node.Val+prefix[len(prefix)-1])
} else {
prefix = append(prefix, node.Val)
}
cnt := 0
for i := range len(prefix) - 1 {
if prefix[len(prefix)-1]-prefix[i] == target {
cnt++
}
}
if prefix[len(prefix)-1] == target {
cnt++
}
return cnt + count(node.Left, prefix, target) + count(node.Right, prefix, target)
}
func pathSum(root *TreeNode, targetSum int) int {
return count(root, nil, targetSum)
}
var _ = pathSum