leetcode508

来源:互联网 发布:苹果六怎么备份数据 编辑:程序博客网 时间:2024/04/19 09:13

经典的树的DFS搜索,采用map操作,得到result和出现的次数的对照表格,然后利用机械的方法,得到最大次数对应的result值。

在这个问题中,竟然因为
iterator的使用浪费大量时间,不值得推崇。

/** * 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:    map<int,int> countMap;    int sum(TreeNode * root)    {        if(root==NULL)             return 0;        else        {            int result = sum(root->left)+sum(root->right)+root->val;               if(countMap.count(result)==0)                countMap[result]=1;            else                countMap[result]++;            return result;        }    }    vector<int> findFrequentTreeSum(TreeNode* root) {        vector<int> frequentNum;        if (root==NULL)            return frequentNum;        else        {            sum(root);            map<int,int>::iterator it=countMap.begin();            int maxFre=(it)->second;            for(it;it!=countMap.end();it++)            {                if(it->second>maxFre)                    maxFre=it->second;            }            for(it=countMap.begin();it!=countMap.end();it++)            {                if(maxFre==it->second)                    frequentNum.push_back(it->first);            }            return frequentNum;        }    }};
0 0
原创粉丝点击