题目:
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.
思路:每一个节点都可能成为所求路径的头节点,所以要遍历每个节点,结果就是一每个节点为头的所有满足路径数目之和,递归求解。
class Solution {
public:
int sumN(TreeNode* root,int sum,int cur) {
if(root == NULL) return 0;
if(root->val+cur == sum) {
return 1+sumN(root->left,sum,cur+root->val)+sumN(root->right,sum,cur+root->val);
} else {
return sumN(root->left,sum,cur+root->val)+sumN(root->right,sum,cur+root->val);
}
}
int pathSum(TreeNode* root, int sum) {
if(root ==NULL) {
return 0;
} else {
return sumN(root,sum,0)+pathSum(root->left,sum)+pathSum(root->right,sum);
}
}
};