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

Day115 | 灵神 | 二叉树 | 二叉搜索树中的众数

Day115 | 灵神 | 二叉树 | 二叉搜索树中的众数

501.二叉搜索树中的众数

501. 二叉搜索树中的众数 - 力扣(LeetCode)

思路:

直接想法:遍历一遍,然后用map统计频率,最后对value排序,选出最大的

更好地做法:

二叉搜索树中序遍历是有序的,收入到一个vector中对这个升序数组进行处理

更好一点的话,那就是中序遍历过程中动态统计频率

用MaxCnt记录最大值,用Cnt表示当前结点值的频率,用pre记录前一个节点

如果当前结点和前一个结点的值相等,那就Cnt++

如果不相等那么Cnt重新置为1,表示当前结点t是一个新值

如果Cnt大于MaxCnt的话就把MaxCnt更新为Cnt

如果二者相等的话就把当前结点的值放入结果集中

class Solution {
public:int cnt=1;TreeNode* pre=nullptr;int MaxCnt=1;vector<int> res;void tra(TreeNode *t){if(t==nullptr)return ;tra(t->left);if(pre!=nullptr)if(pre->val==t->val)cnt++;elsecnt=1;if(cnt==MaxCnt)res.push_back(t->val);else if(cnt>MaxCnt){res.clear();res.push_back(t->val);MaxCnt=cnt;}pre=t;tra(t->right);}vector<int> findMode(TreeNode* root) {tra(root);return res;}
};
http://www.xdnf.cn/news/5217.html

相关文章:

  • Redis 哨兵
  • DIP依赖倒置原则
  • 第十课认识约数
  • 蓝牙身份证阅读器使用Uniapp调用二次开发demo
  • 逆向学习笔记(代码)
  • Linux `uptime` 指令详解与系统监控指南
  • 计算机体系结构一些笔记
  • C++中的继承与多态
  • 【Redis进阶】持久化
  • SpringMVC面试内容
  • 【无标题】I/O复用(epoll)三者区别▲
  • JS DOM操作与事件处理从入门到实践
  • 无线网络设备中AP和AC是什么?有什么区别?
  • 从零开始实现YOLOv8示例
  • 线性表-顺序表(Sequential List)
  • 【vue】vuex实现组件间数据共享 vuex模块化编码 网络请求
  • GRU网络详解
  • 解决使用宝塔Linux部署前后端分离项目遇到的问题
  • 第三章 Freertos智能小车遥控控制
  • 【Web】LACTF 2025 wp
  • 虚拟机风格
  • OpenLayers根据任意数量控制点绘制贝塞尔曲线
  • 关于甲骨文(oracle cloud)丢失MFA的解决方案
  • vim的配置
  • C++(6):逻辑运算符
  • AI 驱动的开发工具
  • 中国古代史1
  • 【ML-Agents】ML-Agents示例项目导入unity报错解决
  • 当冲压焊接遇上Canopen到Profinet协议转换网关
  • 4.分布式锁