1. 程式人生 > >Leetcode501.Find Mode in Binary Search Tree二叉搜尋樹中的眾數

Leetcode501.Find Mode in Binary Search Tree二叉搜尋樹中的眾數

給定一個有相同值的二叉搜尋樹(BST),找出 BST 中的所有眾數(出現頻率最高的元素)。

假定 BST 有如下定義:

  • 結點左子樹中所含結點的值小於等於當前結點的值
  • 結點右子樹中所含結點的值大於等於當前結點的值
  • 左子樹和右子樹都是二叉搜尋樹

例如:

給定 BST [1,null,2,2],

1 \ 2 / 2

返回[2].

提示:如果眾數超過1個,不需考慮輸出順序

 

class Solution {
public:
    map<int, int> check;
    int MAX = 0;
    vector<int> findMode(TreeNode* root)
    {
        Fun(root);
        map<int, int>:: iterator itr;
        vector<int> res;
        for(itr = check.begin(); itr != check.end(); itr++)
        {
            if(itr ->second == MAX)
            {
                res.push_back(itr ->first);
            }
        }
        return res;
    }

    void Fun(TreeNode* root)
    {
        if(root == NULL)
            return ;
        check[root ->val]++;
        MAX = max(MAX, check[root ->val]);
        Fun(root ->left);
        Fun(root ->right);
    }
};