原题:#437_路径总和III
- 关键
- 路径不从根节点开始,也不需要在叶子节点结束
- 递归:
- 以每个节点为根节点,都算一遍路径和为sum的有几条,然后加起来
public int pathSum(TreeNode root, int sum) {
if(root == null) return 0;
return helper(root, sum) + pathSum(root.left, sum) + pathSum(root.right, sum);
}
int helper(TreeNode root, int sum){
if (root == null) return 0;
int ret = 0;//记录已有的路径数目
if (root.val == sum) ret++;
ret += pathSumStartWithRoot(root.left, sum - root.val) + pathSumStartWithRoot(root.right, sum - root.val);
return ret;
}