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刷题总结501-550

[leetcode]508. Most Frequent Subtree Sum二叉树中出现最多的值

LeetCode 347. Top K Frequent Elements(出现频率最多的 k 个元素)

在c#中找出一个数组中出现次数最多的元素,求各种方法,要详细的代码