class Solution {
public:
int times=1;
int max_times=INT_MIN;
TreeNode* pre;
vector<int> result;
vector<int> findMode(TreeNode* root) {
traverse(root);
return result;
}
void traverse(TreeNode* root){
if(root==nullptr) return;
traverse(root->left);
if(pre){
if(root->val==pre->val) times++;
else times=1;
}
if(times>max_times){
while(!result.empty())
result.pop_back();
result.push_back(root->val);
max_times=times;
}else if(times==max_times){
result.push_back(root->val);
}
pre = root;
traverse(root->right);
return;
}
};