Most Frequent Subtree Sum
Description
5
/ \
2 -3 5
/ \
2 -5Solutions
class Solution {
public:
vector<int> findFrequentTreeSum(TreeNode* root) {
unordered_map<int, int> freqs;
treeSum(root, freqs);
vector<int> res;
int max_freq = 0;
for(auto it = freqs.begin(); it != freqs.end(); ++it) {
if(it->second < max_freq) continue;
if(it->second > max_freq){
res.clear();
max_freq = it->second;
}
res.push_back(it->first);
}
return res;
}
int treeSum(TreeNode *root, unordered_map<int, int> &freqs) {
if(!root) return 0;
int sum = treeSum(root->left, freqs) + treeSum(root->right, freqs) + root->val;
freqs[sum]++;
return sum;
}
};Last updated