文章目录

  • 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. 二叉搜索树中的众数(中序遍历)相关推荐

  1. 74. Leetcode 501. 二叉搜索树中的众数 (二叉搜索树-中序遍历类)

    给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素).如果树中有不止一个众数,可以按 任意顺序 返回.假定 BST 满足如下定义:结 ...

  2. LeetCode 501. 二叉搜索树中的众数

    https://leetcode-cn.com/problems/find-mode-in-binary-search-tree/ 难度:简单   给定一个有相同值的二叉搜索树(BST),找出 BST ...

  3. leetcode 501. 二叉搜索树中的众数(Java版)

    题目 https://leetcode-cn.com/problems/find-mode-in-binary-search-tree/ 题解 中序遍历二叉搜索树,可以得到一个有序序列. 遍历这个有序 ...

  4. leetcode 501. 二叉搜索树中的众数 思考分析

    目录 题目 1.不考虑BTS性质,直接寻找众数集合(利用map) 2.考虑BTS的中序遍历结果性质 题目 给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素). 假 ...

  5. LeetCode 501二叉搜索树中的众数-简单

    给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素). 假定 BST 有如下定义: 结点左子树中所含结点的值小于等于当前结点的值 结点右子树中所含结点的值大于等于当 ...

  6. [力扣] 501. 二叉搜索树中的众数

    501 二叉搜索树中的众数 给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素). 例如: 给定 BST [1,null,2,2], 返回[2]. 提示:如果众数超 ...

  7. Suzy找到实习了吗 Day 21 | 二叉树进行中:530. 二叉搜索树的最小绝对差,501. 二叉搜索树中的众数,236. 二叉树的最近公共祖先

    530. 二叉搜索树的最小绝对差 题目 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 .差值是一个正数,其数值等于两值之差的绝对值. solution # Defi ...

  8. LeetCode 783. 二叉搜索树结点最小距离(中序遍历)

    1. 题目 给定一个二叉搜索树的根结点 root, 返回树中任意两节点的差的最小值. 示例:输入: root = [4,2,6,1,3,null,null] 输出: 1 解释: 注意,root是树结点 ...

  9. leetcode系列-501. 二叉搜索树中的众数

    题目描述:给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素).如果树中有不止一个众数,可以按 任意顺序 返回.假定 BST 满足如 ...

最新文章

  1. [NOI2011]Noi嘉年华
  2. php多维数组和对象,在PHP中将多维多对象数组转换为标准多维数组
  3. 从零学React Native之07View
  4. C++继承的基本语法
  5. Spring 3.2矩阵变量是什么? –第2部分:代码
  6. easyui获取下拉框选中的文本值_Word中文本显示不全的常见3种情况及解决方法
  7. python程序写诗_将Python诗歌与D结合起来
  8. mysql max字符串报错_mysql [Warning] max_join_size报错问题解决办法
  9. (王道408考研数据结构)第一章绪论-第二节1:算法的基本概念、算法的特性及设计要求
  10. Java学习-Overload和Override的区别
  11. 基于fo-dicom 的 Worklist CStore 我的学习实现路线
  12. OpenMP和Pthread比较
  13. 如何将工业现场模拟信号无线传输到PLC/主机?
  14. 电压信号与电流信号的转换
  15. php 读取读取本地xlsx,用PHP读取xlsx文件
  16. 继电器写法c语言单片机,51单片机-继电器编程
  17. 不同方式实现IP访问限制
  18. 如何用vba做答题、抽点类ppt
  19. 什么是低代码平台 low-code?
  20. 回归(Regression)是什么意思

热门文章

  1. Linux: shell命令 eval (有图有代码有真相!!!)
  2. 远程登录的几种方式对比
  3. Go语言基础之4--流程控制
  4. 用GDB排查Python程序故障
  5. PowerBuilder调用.Net编译好的DLL
  6. javascript自定义startWith()和endWith()方法
  7. 云计算之路-阿里云上:拔云见日的那一刻,热泪盈眶
  8. flash加xml图片叠加焦点图,左右箭头翻页
  9. FarPoint Spread For .Net 4.0
  10. windows服务编程 注册InstallUtil.exe