LeetCode 508. 出現次數最多的子樹元素和 (遞歸求和、哈希表記錄)

出現次數最多的子樹元素和

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    unordered_map<int,int> m;
    int mmax=INT_MIN;
    vector<int> findFrequentTreeSum(TreeNode* root) {
        getSumOfChilren(root);
        vector<int> ans;
        for(unordered_map<int,int>::iterator it=m.begin();it!=m.end();it++){
            if(it->second==mmax){
                ans.push_back(it->first);
            }
        }
        return ans;
    }
    int getSumOfChilren(TreeNode* root){
        if(!root){
            return 0;
        }
        int x =root->val+getSumOfChilren(root->left)+getSumOfChilren(root->right);
        m[x]++;
        mmax = max(mmax,m[x]);
        return x;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章