Python怎么找到二叉搜索树中的所有mode
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容介绍了"Python怎么找到二叉搜索树中的所有mode"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学
千家信息网最后更新 2025年12月02日Python怎么找到二叉搜索树中的所有mode
本篇内容介绍了"Python怎么找到二叉搜索树中的所有mode"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
题目:找到二叉搜索树中的所有mode(出现最频繁的元素)。
思路:这里定义的二叉搜索树的一个结点的左子树中所有结点的值都小于或等于该结点的值,右子树则相反,大于或等于。于此同时,follow up说让我们不用除了递归中的隐含栈之外的额外空间,因此不能使用哈希表。由于是二叉搜索树,那么我们中序遍历出来的结果就是有序的,我们只需要比较前后两个元素是否相等,就能统计某个元素出现的次数,因为相同的元素可定是都在一起的。我们需要一个结点变量pre来记录上一个遍历到的结点,然后mx记录最大的次数,cnt计数当前元素出现的次数。中序遍历的时候,如果pre不为空,说明当前不是第一个结点,我们和之前一个结点比较,如果相等,则cnt自增1,如果不等,cnt重置1。如果此时cnt大于mx,那么我们清空结果res,并把当前结点值放入结果res,如果cnt等于mx,那么我们直接将当前结点值加入结果res,然后mx赋值为cnt。最后我们把pre更新为当前结点。如果pre为空,说明当前结点是根结点。那么我们新建一个结点并赋上当前结点值。
Language : cpp
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:vector findMode(TreeNode* root) {if (!root) return {};vector res; TreeNode *now = root, *pre = NULL;stack s;int mx = 0, cnt = 1;while (!s.empty() || now) {while (now) { //中序遍历,左中右。将每个结点的左子树入栈s.push(now); now = now->left; } now = s.top(); s.pop(); //取栈顶元素if (pre) { //判断当前元素和上一个元素值是否一样,一样cnt计数加一cnt = (now->val == pre->val) ? cnt + 1 : 1; } //如果cnt大于等于mx,说明当前元素重复次数大于之前最大的重复元素的次数,需要将新结果入结果栈。if (cnt >= mx) {if (cnt > mx) res.clear(); res.push_back(now->val); mx = cnt; }if (!pre) pre = new TreeNode(now->val); pre->val = now->val; now = now->right; }return res; }}; Language : python
# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution(object):def findMode(self, root):""" :type root: TreeNode :rtype: List[int] """res = [] s = [] now = root pre = Nonemx, cnt = 0, 1while s or now:while now: s.append(now) now = now.left now = s.pop(len(s) - 1)if pre:if now.val == pre.val: cnt = cnt + 1else: cnt = 1if cnt >= mx:if cnt > mx:del res[:] res.append(now.val) mx = cntif not pre: pre = TreeNode(now.val) pre.val = now.val now = now.rightreturn res
"Python怎么找到二叉搜索树中的所有mode"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
结点
元素
结果
搜索
次数
子树
最大
内容
更多
知识
实用
有序
相同
频繁
学有所成
接下来
不用
两个
中右
变量
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
嗨皮咳嗽服务器为什么登录失败
泰拉瑞亚服务器为什么不能动
计算机网络技术自考答案
数据库简单查询怎么查总金额
移动宽带代理服务器连接失败
负载均衡器算网络安全设备
新网络技术论坛
服务器上的电子表格
鸿蒙工业软件开发数控系
淘金网络安全关注度
湖南软件开发应用
博睿思创互联网科技有限公司
数据库查询学生表id为偶数
网络安全厂商产值
程序员和软件开发什么关系
注意防范网络安全隐患
pdf卡片数据库2015
服务器性能监测指标
逾期信息上了数据库有什么影响
重庆代还软件开发资料大全
惠州汽车软件开发市场价
c创建数据库表
威科国际法律数据库
网络安全态势感知平台英文
方舟手游删除后服务器存档在哪
中国操作风险数据库
如何配置php服务器
网络安全科测验试题
贵阳服务器备份一体机厂家
万方外文文献数据库