题目描述
You are given a binary tree in which each node contains an integer value.
Find the number of paths that sum to a given value.
The path does not need to start or end at the root or a leaf, but it must go downwards (traveling only from parent nodes to child nodes).
The tree has no more than 1,000 nodes and the values are in the range -1,000,000 to 1,000,000.
方法思路
recursive DFS.
class Solution {
//Runtime: 18 ms, faster than 33.29%
//Memory Usage: 40.2 MB, less than 68.75%
public int pathSum(TreeNode root, int sum) {
if(root == null) return 0;
int left = pathSum(root.left, sum);
int right = pathSum(root.right, sum);
return pathSumHelp(root, sum) + left + right;
}
public int pathSumHelp(TreeNode root, int sum){
if(root == null) return 0;
int left = pathSumHelp(root.left, sum - root.val);
int right = pathSumHelp(root.right, sum - root.val);
return (root.val == sum ? 1 : 0) + left + right;
}
}