本文主要是介绍[力扣题解] 501. 二叉搜索树中的众数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:501. 二叉搜索树中的众数
思路
代码
Method 1
把二叉搜索树的结果拉直,排序,再从前往后统计;
其中,使用unordered_map
来记录元素->次数
对,用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> map;void travel(TreeNode* cur){if(cur == NULL){return;}// 左if(cur->left){travel(cur->left);}// 中map[cur->val]++;// 右if(cur->right){travel(cur->right);}}bool static cmp(const pair<int, int>& a, const pair<int, int>& b){return a.second > b.second;}public:vector<int> findMode(TreeNode* root) {travel(root);int i, max_time;vector<int> result;vector<pair<int, int>> vec(map.begin(), map.end()); // 元素->次数sort(vec.begin(), vec.end(), cmp);result.push_back(vec[0].first);max_time = vec[0].second;for(i = 1; i < vec.size(); i++){//cout << i << ": " << vec[i].first << ", " << vec[i].second << endl;if(vec[i].second == max_time){result.push_back(vec[i].first);}}return result;}
};
这篇关于[力扣题解] 501. 二叉搜索树中的众数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!