struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x):val(x),left(NULL),right(NULL){}
};
class Solution {
public:
vector<int> ManyNum(TreeNode* root) {
unordered_map<int, int> map;
dfs(root, map);
vector<pair<int, int>>vec(map.begin(), map.end());
sort(vec.begin(), vec.end(), cmp);
vector<int> result;
result.push_back(vec[0].first);
for (int i = 1; i < vec.size(); i++) {
if (vec[0].second == vec[i].second) {
result.push_back(vec[i].first);
}
else {
break;
}
}
return result;
}
bool static cmp(pair<int, int>a, pair<int, int>b) {
return a.second > b.second;
}
void dfs(TreeNode* root,unordered_map<int, int>& map) {
if (root == NULL) return;
dfs(root->left, map);
map[root->val]++;
dfs(root->right, map);
}
};
int main() {
TreeNode* a = new TreeNode(1);
TreeNode* b = new TreeNode(2);
TreeNode* c = new TreeNode(2);
a->right = b;
b->left = c;
Solution ss;
vector<int> result = ss.ManyNum(a);
for (auto& ch:result) {
cout << ch << " ";
}
return 0;
}
501. 二叉搜索树中的众数
最新推荐文章于 2025-06-06 21:48:36 发布