【谷歌面試題】找出二叉查詢樹中出現頻率最高的元素
找出二叉查詢樹中出現頻率最高的元素。樹中結點滿足left->val <= root->val <= right->val。如果多個元素出現次數相等,返回最小的元素。
在一個有序陣列中,我們查詢出現頻率最高的元素,很簡單,順序掃描一遍即可統計出。那麼我們對二叉查詢樹也可以用類似方式統計,因為中序遍歷序列就是有序序列,所以我們在中序遍歷的過程中就可以統計出出現頻率最高的元素。
class TreeNode
{
public:
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int val, TreeNode* left = NULL, TreeNode *right = NULL)
{
this->val = val;
this->left = left;
this->right = right;
}
};
int GetMostFrequently(TreeNode * root)
{
void _GetMostFrequently(TreeNode *root, int & current, int & currentFrequency,
int & maxFrequency, int & mostFrequently);
if(root == NULL)
throw new invalid_argument("Can't be a NULL tree");
int mostFrequently = INT_MAX;
int current = INT_MAX;
int currentFrequency = 0;
int maxFrequency = 0;
_GetMostFrequently(root, current, currentFrequency, maxFrequency, mostFrequently);
return mostFrequently;
}
void _GetMostFrequently(TreeNode *root, int & current, int & currentFrequency,
int & maxFrequency, int & mostFrequently)
{
if(root == NULL)
return;
_GetMostFrequently(root->left, current, currentFrequency,
maxFrequency, mostFrequently);
if(root->val == current)
++currentFrequency;
else
{
current = root->val;
currentFrequency = 1;
}
if(currentFrequency > maxFrequency)
{
maxFrequency = currentFrequency;
mostFrequently = current;
}
_GetMostFrequently(root->right, current, currentFrequency,
maxFrequency, mostFrequently);
}
相關文章
- 海量資料場景面試題:出現頻率最高的 100 個詞面試題
- 第 34 題:如何實現二叉查詢樹?
- js找出陣列中出現最多的元素和次數JS陣列
- 二叉查詢樹
- 二叉查詢樹概念及實現
- 二叉查詢樹的插入刪除查詢
- 手擼二叉樹——二叉查詢樹二叉樹
- 面試題7:重建二叉樹面試題二叉樹
- 計算出一段英文中出現頻率最高的單詞(第一次面試時沒做出來,現在都記憶深刻)...面試
- JavaScript實現簡單二叉查詢樹JavaScript
- 二叉查詢樹【二叉排序樹】構建和查詢演算法 PHP 版排序演算法PHP
- Python實用技法第11篇:找出序列中出現次數最多的元素Python
- 二叉樹高頻題(下)二叉樹
- 平衡二叉查詢樹:紅黑樹
- 二叉樹路徑查詢二叉樹
- Amazing tree —— 二叉查詢樹
- 大廠面試經:高頻率JVM面試問題整理!面試JVM
- 二叉查詢樹和笛卡爾樹
- 面試題37:序列化二叉樹面試題二叉樹
- 二叉查詢樹(查詢、插入、刪除)——C語言C語言
- 5分鐘瞭解二叉樹之二叉查詢樹二叉樹
- 滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹(二叉查詢樹)和最優二叉樹二叉樹
- 使用JS去實現一個BST(二叉查詢樹)JS
- 實現二叉搜尋樹的新增,查詢和刪除(JAVA)Java
- 相同二叉樹和鏡面二叉樹問題二叉樹
- 一篇文章搞定面試中的二叉樹題目(java實現)面試二叉樹Java
- 014 Linux 線上高頻使用以及面試高頻問題——如何查詢大檔案並安全的清除?Linux面試
- 二分查詢(JS解法)——高頻面試演算法題(百度真題)JS面試演算法
- 高頻面試題面試題
- 【Algorithm&DataStructure】二叉查詢樹(BST)的遍歷GoASTStruct
- 資料結構和演算法面試題系列—二叉樹面試題彙總資料結構演算法面試題二叉樹
- SQL面試題 三(單表、多表查詢)SQL面試題
- Leetcode 二叉樹題目集合 (看完這個面試不會做二叉樹題,辣條給你!!!!!)LeetCode二叉樹面試
- 幾道和「二叉樹」有關的演算法面試題二叉樹演算法面試題
- 面試題34:二叉樹中和為某一值的路徑面試題二叉樹
- 統計一個字串出現頻率最高的字母/數字字串
- Python實現二叉樹的增、刪、查Python二叉樹
- 一道關於二叉樹的位元組面試題的思考二叉樹面試題
- MySQL高頻面試題MySql面試題