【谷歌面試題】找出二叉查詢樹中出現頻率最高的元素
找出二叉查詢樹中出現頻率最高的元素。樹中結點滿足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);
}
相關文章
- 資料分析面試題:如何從10億查詢詞找出出現頻率最高的10個?面試題
- 【谷歌面試題】有序輸出兩棵二叉查詢樹中的元素谷歌面試題
- 11個提問頻率最高的PHP面試題PHP面試題
- 出現頻率最高的筆試題 (轉)筆試
- 第 34 題:如何實現二叉查詢樹?
- 二叉樹 & 二叉查詢樹二叉樹
- js找出陣列中出現最多的元素和次數JS陣列
- 二叉查詢樹的實現——C++C++
- 二叉查詢樹(二叉排序樹)排序
- 二叉查詢樹
- 查詢二叉樹二叉樹
- 二叉查詢樹概念及實現
- C#實現二叉查詢樹C#
- 二叉查詢樹的插入刪除查詢
- JavaScript實現簡單二叉查詢樹JavaScript
- redo切換頻率查詢
- 二叉查詢樹的個數
- 平衡二叉查詢樹:紅黑樹
- 二叉查詢樹【二叉排序樹】構建和查詢演算法 PHP 版排序演算法PHP
- 二叉樹路徑查詢二叉樹
- 轉:C++實現的變種二分查詢法(折半查詢)--二叉查詢樹C++
- 計算出一段英文中出現頻率最高的單詞(第一次面試時沒做出來,現在都記憶深刻)...面試
- 查詢|有序表折半查詢判定樹|二叉排序樹|3階B-樹排序
- Amazing tree —— 二叉查詢樹
- 滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹(二叉查詢樹)和最優二叉樹二叉樹
- 5分鐘瞭解二叉樹之二叉查詢樹二叉樹
- 二叉查詢樹(查詢、插入、刪除)——C語言C語言
- 面試題7:重建二叉樹面試題二叉樹
- Python實用技法第11篇:找出序列中出現次數最多的元素Python
- 使用JS去實現一個BST(二叉查詢樹)JS
- C++二叉查詢樹實現過程詳解C++
- 二叉排序樹查詢,插入,刪除排序
- 實現二叉搜尋樹的新增,查詢和刪除(JAVA)Java
- 五大經典查詢(1)_二叉排序樹查詢排序
- 微策略面試題:在旋轉後的陣列中查詢元素(二分查詢)面試題陣列
- 統計一個字串出現頻率最高的字母/數字字串
- 黑客書架上出現頻率最高的9部半書籍黑客
- #查詢演算法#【2】二叉排序樹演算法排序