Leetcode501.二叉搜索树中的众数

在这里插入图片描述

class Solution {
    
    
public:
    int base, count, maxCount;
    vector<int> answer;

    void update(int x) {
    
    
        if (x == base) {
    
    
            ++count;
        } else {
    
    
            count = 1;
            base = x;
        }
        if (count == maxCount) {
    
    
            answer.push_back(base);
        }
        if (count > maxCount) {
    
    
            maxCount = count;
            answer = vector<int> {
    
    base};
        }
    }

    vector<int> findMode(TreeNode* root) {
    
    
        TreeNode *cur = root, *pre = nullptr;
        while (cur) {
    
    
            if (!cur->left) {
    
    
                update(cur->val);
                cur = cur->right;
                continue;
            }
            pre = cur->left;
            while (pre->right && pre->right != cur) {
    
    
                pre = pre->right;
            }
            if (!pre->right) {
    
    
                pre->right = cur;
                cur = cur->left;
            } else {
    
    
                pre->right = nullptr;
                update(cur->val);
                cur = cur->right;
            }
        }
        return answer;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_42964413/article/details/108766840
今日推荐