1class Solution {2public:3int ans = 0, t;45void dfs(unordered_map<long long, int> &curr, TreeNode *node, long long sm) {6if (!node) {7return;8}910sm += (long long)node->val;11ans += curr[sm - t];12curr[sm]++;1314dfs(curr, node->left, sm);15dfs(curr, node->right, sm);1617curr[sm]--;18}19int pathSum(TreeNode *root, int targetSum) {20if (!root) {21return 0;22}2324t = targetSum;25unordered_map<long long, int> curr;26curr[0] = 1;27long long sm = 0;2829dfs(curr, root, sm);3031return ans;32}33};