LeetCode 508 出现次数最多的子树元素和[dfs] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 508 出现次数最多的子树元素和[dfs] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
问题描述可谓是稀碎,其实就是统计所有子树和中,数量最多的值的集合,首先定义好map,从根开始dfs,将每个子树的和记录到map中,key是值,value是个数,深搜完毕后,遍历map把最大个数value的值放入vector中,代码如下:
/**
* Definition for a binary tree node.
* struct TreeNode
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr)
* TreeNode(int x) : val(x), left(nullptr), right(nullptr)
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right)
* ;
*/
class Solution
private:
unordered_map<int, int> mp;
public:
vector<int> findFrequentTreeSum(TreeNode* root)
dfs(root);
vector<int> ans;
int maxNum = 0;
for(auto& [a, b] : mp)
if(b == maxNum)
ans.emplace_back(a);
if(b > maxNum)
maxNum = b;
ans.resize(0);
ans.emplace_back(a);
return ans;
int dfs(TreeNode* root)
if(root == nullptr)
return 0;
int sum = root->val + dfs(root->left) + dfs(root->right);
mp[sum] ++;
return sum;
;
/*作者:heroding
链接:https://leetcode.cn/problems/most-frequent-subtree-sum/solution/c-dfs-by-heroding-7el4/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。*/
以上是关于LeetCode 508 出现次数最多的子树元素和[dfs] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
Python描述 LeetCode 508. 出现次数最多的子树元素和
LeetCode 508 出现次数最多的子树元素和[dfs] HERODING的LeetCode之路
[leetcode]508. Most Frequent Subtree Sum二叉树中出现最多的值