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