| 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)
 
- }
 
 
  |