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