Python怎么找到二叉搜索树中的所有mode
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容介绍了"Python怎么找到二叉搜索树中的所有mode"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
互联网是第几次科技革命的成果
互联网科技官网
互联网科技公司的优势
科技创新与互联网经济
互联网 科技
杭州互联网科技公司
鑫亿盛互联网科技
北京互联网络科技有限公司
华中科技大学互联网
远拓互联网科技
奇士达互联网科技
互联网实体化科技化
互联网系的金融科技公司
天津腾达互联网科技有限公司
互联网公司黑科技创始人
科技赋能视角下互联网保险发展
互联网科技圈年度人物
北京市互联网新科技
领航科技大厦互联网公司
陕西云淼互联网科技公司
小米移动互联网科技园
致骋互联网科技
深圳前海聚择互联网科技有限公司
互联网科技商业
健康食品互联网创新科技园项目
翼展科技 首家互联网医院
领航科技大厦互联网公司
卡尔迅互联网科技有限公司
版纳互联网科技选哪家
广西泛欧互联网科技有限公司