Leetcode 437. Path Sum III (Easy) (cpp)

来源:互联网 发布:centos 迅雷 编辑:程序博客网 时间:2024/05/19 16:49

Leetcode 437. Path Sum III (Easy) (cpp)

Tag: Tree

Difficulty: Easy


/*437. Path Sum III (Easy)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.Example:root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 810/  \5   -3/ \    \3   2   11/ \   \3  -2   1Return 3. The paths that sum to 8 are:1.  5 -> 32.  5 -> 2 -> 13. -3 -> 11*//*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/class Solution {public:int pathSum(TreeNode* root, int sum) {unordered_map<int, int> mapping;mapping[0] = 1;return pathSum(root, 0, sum, mapping);}private:int pathSum(TreeNode* root, int sum, const int& target, unordered_map<int, int>& mapping) {if (root == NULL) {return 0;}sum += root->val;int res = mapping.find(sum - target) != mapping.end() ? mapping[sum - target] : 0;mapping[sum]++;res += pathSum(root->left, sum, target, mapping) + pathSum(root->right, sum, target, mapping);mapping[sum]--;return res;}};


0 0