标签:计数器 影响 col 注意 get tree node count binary ret
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution 11 { 12 public: 13 int helper(TreeNode* root,unordered_map<int,int> &map,int sum,int target) 14 { 15 if(root==NULL) 16 return 0; 17 sum+=root->val; 18 int res=0; 19 if(map.count(sum-target)) 20 res=map[sum-target]; 21 map[sum]++; 22 res+=helper(root->left,map,sum,target); 23 res+=helper(root->right,map,sum,target); 24 map[sum]--; 25 return res; 26 } 27 28 int pathSum(TreeNode* root, int sum) 29 { 30 unordered_map<int,int> map; 31 map[0]=1; 32 return helper(root,map,0,sum); 33 } 34 };
这个题,用的递归
从根节点开始,每路过一个节点,就把从根节点到该节点所有节点值累加起来存入关联容器,假设当前累加至了cur,而cur-target存在于关联容器中,则累加和为cur-target那个节点到当前节点之间的节点值打得和为目标值,此时将计数器增加。
应该注意的是每次递归函数执行完成返回上一级递归时,要将map[sum]--,因为可能存在下面的sum和上面的sum相等,影响到上一级的计数器改变值,所以每次返回要将当前sum的关联容器置为0.
标签:计数器 影响 col 注意 get tree node count binary ret
原文地址:https://www.cnblogs.com/zhuangbijingdeboke/p/9102006.html