使用了前缀和
class Solution {
public:
unordered_map<long long, long long> cnt;
long long res=0;
int pathSum(TreeNode* root, long long sum) {
cnt[0]=1;
dfs(root, sum, 0);
return res;
}
void dfs(TreeNode* root, long long sum, long long cur)
{
if(!root)return;
cur+=root->val;
res+=cnt[cur-sum];
cnt[cur]++;
dfs(root->left, sum, cur);
dfs(root->right, sum, cur);
cnt[cur]--;
}
};