LeetCode:48.路径总和Ⅲ
目录
1.路径总和Ⅲ
1.路径总和Ⅲ
这道题可以通过前缀和的方式来解决,我们利用先序遍历二叉树,记录下根节点 root 到当前节点 p 的路径上除当前节点以外所有节点的前缀和,在已保存的路径前缀和中查找是否存在前缀和刚好等于当前节点到根节点的前缀和 curr 减去 targetSum
class Solution {unordered_map<long long, int> hash;
public:int dfs(TreeNode* root, long long cur, int targetSum){if(root == nullptr)return 0;int ret = 0;cur += root->val;if(hash.count(cur - targetSum)) ret += hash[cur - targetSum];hash[cur]++;ret += dfs(root->left, cur, targetSum);ret += dfs(root->right, cur, targetSum);hash[cur]--;return ret;}int pathSum(TreeNode* root, int targetSum) {hash[0] = 1;return dfs(root, 0, targetSum);}
};