对二叉树进行中序遍历,用maxCount记录最大值。如果存在count==maxCount,压进vector之中。如果count更大,更新vector。
/** * 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: int count; int maxCount; TreeNode* pre; vector<int> ans; void searchBST(TreeNode* cur) { if(cur == NULL){ return; } searchBST(cur->left); if(pre == NULL) { count = 1; } else if (pre->val == cur->val){ count++; } else { count = 1; } pre = cur; if(count == maxCount) { ans.push_back(cur->val); } if(count > maxCount) { maxCount = count; ans.clear(); ans.push_back(cur->val); } searchBST(cur->right); return; } vector<int> findMode(TreeNode* root) { int count = 0; int maxCount = 0; TreeNode* pre = NULL; ans.clear(); searchBST(root); return ans; } };
原文:https://www.cnblogs.com/lightac/p/13724411.html