码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode-508-Most Frequent Subtree Sum]

时间:2017-05-25 21:57:42      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:code   with   ret   values   target   tar   example   https   first   

Given the root of a tree, you are asked to find the most frequent subtree sum.
The subtree sum of a node is defined as the sum of all the node values formed by the subtree rooted at
that node (including the node itself). So what is the most frequent subtree sum value? If there is a tie,
return all the values with the highest frequency in any order.
Examples 1
Input:
  5
 / \
2 -3
return [2, -3, 4], since all the values happen only once, return all of them in any order.
Examples 2
Input:
  5
 / \
2 -5
return [2], since 2 happens twice, however -5 only occur once.

思路:

用一个map记录结点的sum与出现的次数。

int sumofTree(TreeNode* root, map<int, int>&counts, int & maxcount)
     {
         if (root == NULL)return 0;
         int sum = root->val;
         sum += sumofTree(root->left, counts, maxcount);
         sum += sumofTree(root->right, counts, maxcount);
         counts[sum]++;
         maxcount = max(maxcount, counts[sum]);
         return sum;
     }
     vector<int> findFrequentTreeSum(TreeNode* root)
     {
         vector<int>ret;
         map<int, int>counts;
         int maxcount = 0;
         sumofTree(root, counts, maxcount);

         for (auto it = counts.begin(); it != counts.end();it++)
         {
             if (it->second == maxcount)ret.push_back(it->first);              
         }
         return ret;
     }

参考:

https://discuss.leetcode.com/topic/77763/short-clean-c-o-n-solution

[leetcode-508-Most Frequent Subtree Sum]

标签:code   with   ret   values   target   tar   example   https   first   

原文地址:http://www.cnblogs.com/hellowooorld/p/6905778.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!