LeetCode 501. 二叉搜索树中的众数(中序遍历)
文章目录
- 1. 题目
- 2. 中序遍历
1. 题目
给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。
假定 BST 有如下定义:
结点左子树中所含结点的值小于等于当前结点的值
结点右子树中所含结点的值大于等于当前结点的值
左子树和右子树都是二叉搜索树
例如:
给定 BST [1,null,2,2],1\2/2
返回[2].提示:如果众数超过1个,不需考虑输出顺序
进阶:你可以不使用额外的空间吗?(假设由递归产生的隐式调用栈的开销不被计算在内)
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-mode-in-binary-search-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 中序遍历
- 二叉搜索树中序遍历是非降的,每次跟前面的比较即可,记录最大长度
- 采用中序遍历的循环写法
- 具体逻辑,见代码
class Solution {public:vector<int> findMode(TreeNode* root) {stack<TreeNode*> stk;TreeNode *tp;vector<int> ans;int prev, maxlen = 0, curlen = 0;bool flag = true;while(root || !stk.empty()){while(root){stk.push(root);root = root->left;}tp = stk.top();stk.pop();root = tp->right;if(flag)//只进来一次{prev = tp->val;flag = false;curlen = 1;maxlen = 1;ans.push_back(tp->val);continue;}if(tp->val == prev){curlen++;if(curlen > maxlen){ //碰见频率大的maxlen = curlen;ans.clear();//清空频率小的ans.push_back(tp->val);}else if(curlen == maxlen)ans.push_back(tp->val);//频率相同的都进去}else//与前一个不相等{prev = tp->val;curlen = 1;if(curlen == maxlen)//curlen只可能==maxlen为1的情况ans.push_back(tp->val);}}return ans;}
};
LeetCode 501. 二叉搜索树中的众数(中序遍历)相关推荐
- 74. Leetcode 501. 二叉搜索树中的众数 (二叉搜索树-中序遍历类)
给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素).如果树中有不止一个众数,可以按 任意顺序 返回.假定 BST 满足如下定义:结 ...
- LeetCode 501. 二叉搜索树中的众数
https://leetcode-cn.com/problems/find-mode-in-binary-search-tree/ 难度:简单 给定一个有相同值的二叉搜索树(BST),找出 BST ...
- leetcode 501. 二叉搜索树中的众数(Java版)
题目 https://leetcode-cn.com/problems/find-mode-in-binary-search-tree/ 题解 中序遍历二叉搜索树,可以得到一个有序序列. 遍历这个有序 ...
- leetcode 501. 二叉搜索树中的众数 思考分析
目录 题目 1.不考虑BTS性质,直接寻找众数集合(利用map) 2.考虑BTS的中序遍历结果性质 题目 给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素). 假 ...
- LeetCode 501二叉搜索树中的众数-简单
给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素). 假定 BST 有如下定义: 结点左子树中所含结点的值小于等于当前结点的值 结点右子树中所含结点的值大于等于当 ...
- [力扣] 501. 二叉搜索树中的众数
501 二叉搜索树中的众数 给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素). 例如: 给定 BST [1,null,2,2], 返回[2]. 提示:如果众数超 ...
- Suzy找到实习了吗 Day 21 | 二叉树进行中:530. 二叉搜索树的最小绝对差,501. 二叉搜索树中的众数,236. 二叉树的最近公共祖先
530. 二叉搜索树的最小绝对差 题目 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 .差值是一个正数,其数值等于两值之差的绝对值. solution # Defi ...
- LeetCode 783. 二叉搜索树结点最小距离(中序遍历)
1. 题目 给定一个二叉搜索树的根结点 root, 返回树中任意两节点的差的最小值. 示例:输入: root = [4,2,6,1,3,null,null] 输出: 1 解释: 注意,root是树结点 ...
- leetcode系列-501. 二叉搜索树中的众数
题目描述:给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素).如果树中有不止一个众数,可以按 任意顺序 返回.假定 BST 满足如 ...
最新文章
- [NOI2011]Noi嘉年华
- php多维数组和对象,在PHP中将多维多对象数组转换为标准多维数组
- 从零学React Native之07View
- C++继承的基本语法
- Spring 3.2矩阵变量是什么? –第2部分:代码
- easyui获取下拉框选中的文本值_Word中文本显示不全的常见3种情况及解决方法
- python程序写诗_将Python诗歌与D结合起来
- mysql max字符串报错_mysql [Warning] max_join_size报错问题解决办法
- (王道408考研数据结构)第一章绪论-第二节1:算法的基本概念、算法的特性及设计要求
- Java学习-Overload和Override的区别
- 基于fo-dicom 的 Worklist CStore 我的学习实现路线
- OpenMP和Pthread比较
- 如何将工业现场模拟信号无线传输到PLC/主机?
- 电压信号与电流信号的转换
- php 读取读取本地xlsx,用PHP读取xlsx文件
- 继电器写法c语言单片机,51单片机-继电器编程
- 不同方式实现IP访问限制
- 如何用vba做答题、抽点类ppt
- 什么是低代码平台 low-code?
- 回归(Regression)是什么意思
热门文章
- Linux: shell命令 eval (有图有代码有真相!!!)
- 远程登录的几种方式对比
- Go语言基础之4--流程控制
- 用GDB排查Python程序故障
- PowerBuilder调用.Net编译好的DLL
- javascript自定义startWith()和endWith()方法
- 云计算之路-阿里云上:拔云见日的那一刻,热泪盈眶
- flash加xml图片叠加焦点图,左右箭头翻页
- FarPoint Spread For .Net 4.0
- windows服务编程 注册InstallUtil.exe