c++
class Solution {
public:
int dfs(TreeNode *root, int sum) {
if (!root) return 0;
int val = sum - root->val;
return (root->val == sum) + dfs(root->left, val) + dfs(root->right, val);
}
int pathSum(TreeNode* root, int sum) {
if (!root) return 0;
int a = dfs(root, sum);
return a + pathSum(root->left, sum) + pathSum(root->right, sum);
}
};
js
var pathSum = function(root, sum) {
if (!root) return 0;
var dfs = function(root, val) {
if (!root) return 0;
return (root.val == val) + dfs(root.left, val - root.val) + dfs(root.right, val - root.val);
}
return dfs(root, sum) + pathSum(root.left, sum) + pathSum(root.right, sum);
};