12345678910111213141516171819202122232425262728293031 |
- /**
- * Definition for a binary tree node.
- * type TreeNode struct {
- * Val int
- * Left *TreeNode
- * Right *TreeNode
- * }
- */
- func pathSum(root *TreeNode, sum int) (cnt int) {
- helper(root, []*TreeNode{}, sum, 0, &cnt)
- return
- }
- func helper(node *TreeNode, path []*TreeNode, sum, currSum int, cnt *int) {
- if node == nil {
- return
- }
- currSum += node.Val
- if currSum == sum {
- (*cnt)++
- }
- n := len(path)
- for cs, i := currSum, 0; i < n; i++ {
- cs -= path[i].Val
- if cs == sum {
- (*cnt)++
- }
- }
- helper(node.Left, append(path, node), sum, currSum, cnt)
- helper(node.Right, append(path, node), sum, currSum, cnt)
- }
|