当前位置: 首页 > news >正文

二叉树_二叉搜索树中的众数

二叉树_二叉搜索树中的众数

  • 一、leetcode-501
  • 二、题解
    • 1.引库
    • 2.代码


一、leetcode-501

二叉搜索树中的众数

给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。

如果树中有不止一个众数,可以按 任意顺序 返回。

假定 BST 满足如下定义:

结点左子树中所含节点的值 小于等于 当前节点的值
结点右子树中所含节点的值 大于等于 当前节点的值
左子树和右子树都是二叉搜索树

输入:root = [4,2,6,1,3]
输出:1


二、题解

1.引库

 #include <iostream>
 #include <cstdio>
 #include <cstdlib>
 #include <queue>
 #include <stack>
 #include <algorithm>
 #include <string>
 #include <map>
 #include <set>
 #include <vector>
 using namespace std;
 

2.代码

所以如果本题没有说是二叉搜索树的话,那么就按照上面的思路写!

class Solution {
public:
    void traverse(TreeNode *node,unordered_map<int,int> &map){
        if(node==NULL) return ;
        map[node->val]++;
        traverse(node->left,map);
        traverse(node->right,map);
        return ;
    }
…        for(int i=0;i<vec.size();i++){
            if(vec[i].second==vec[0].second) result.push_back(vec[i].first);
            else break;
        }
        return result;
    }
};

是二叉搜索树
既然是搜索树,它中序遍历就是有序的。

class Solution {
public:
    int count=0,maxcount=0;
    TreeNode *pre=NULL;
    vector<int> result;
    void traverse(TreeNode *node){
        if(node==NULL) return ;
        traverse(node->left);
        if(pre==NULL){
            count=1;
        }else if(node->val==pre->val){
            count++;
        }else{
            count=1;
        }
        pre=node;
        if(count==maxcount){
            result.push_back(node->val);
        }else if(count>maxcount){
            maxcount=count;
            result.clear();
            result.push_back(node->val);
        }
        traverse(node->right);
        return ;
    }
    vector<int> findMode(TreeNode* root) {
        traverse(root);
        return result;
    }
};

相关文章:

  • 重生之我是八位数码管糕手
  • 使用__attribute__((at(addr))) 固定变量到指定 Flash 地址
  • 架构思维:从CAP到PACELC到BASE
  • :ref 和 this.$refs 的区别及 $ 的作用
  • 机器学习在自然语言处理中的应用与实践
  • c++高精度减法
  • @maptalks/gl-layers中的VectorTileLayer的Symbol样式文档
  • 对该Django ORM查询的改进方案及详细说明
  • 表达式树和编译原理【10道经典面试题】(中英对照)
  • 机器人前沿技术的发展与展望
  • 《Manus学习手册》.pdf(文末附完整版下载地址)
  • 二叉树的前,中,后序遍历
  • 前端 -- 计算机图形学基础:光与三角形面(Mesh)求交
  • 系统转换、系统维护、净室软件工程、构件软件工程(高软51)
  • 【C++教程】bool类型
  • Android平台毫秒级低延迟HTTP-FLV直播播放器技术探究与实现
  • 【算法day19】括号生成——数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
  • MySQL中怎么分析性能?
  • ollama 设置环境变量OLLAMA_HOST允许外部访问
  • 深入探索ArkUI中的@LocalBuilder装饰器:构建高效可维护的UI组件
  • 国泰海通合并后首份业绩报告出炉:一季度净利润增逾391%
  • 浙商银行一季度净赚超59亿微增0.61%,非息净收入降逾22%
  • 发布亮眼一季度报后,东阿阿胶股价跌停:现金流隐忧引发争议
  • 阿里千问3系列发布并开源:称成本大幅下降,性能超越DeepSeek-R1
  • 中介在网上非法贩婴“一个孩子8.5万元”?丹阳警方介入
  • 物业也能成为居家养老“服务员”,上海多区将开展“物业+养老”试点