https://leetcode.com/problems/path-sum-iii/
这道题与 Path Sum 与 Path Sum II 的区别在于,这道题不需要遍历到叶子节点再结束,同时也不用从根节点开始记录,只要遇到有相加等于 sum 的节点,就记录下来,最终输出有几条这样的路径。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public int pathSum(TreeNode root, int sum) {
if (root == null) return 0;
return helper(root, sum) + pathSum(root.left, sum) + pathSum(root.right, sum);
}
public int helper(TreeNode root, int sum) {
if (root == null) return 0;
int count = 0;
if (root.val == sum) count++;
return count + helper(root.left, sum - root.val) + helper(root.right, sum - root.val);
}
}