解题思路:
(1)使用map的key,value记录中序遍历时,每个数字以及它们出现的次数
(2)寻找到出现的最大次数,并记录次数等于最大次数的数字
/**
* 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 {
public:
vector<int> findMode(TreeNode* root) {
map<int,int> mp;
vector<int> v;
inorder(mp,root);
int max = INT_MIN;
for(auto&& w:mp) if(w.second>=max) max = w.second;
for(auto&& w:mp) if(w.second==max) v.push_back(w.first);
return v;
}
void inorder(map<int,int> &mp,TreeNode* root) {
if(root==NULL) return;
inorder(mp,root->left);
mp[root->val]++;
inorder(mp,root->right);
}
};