首页 > 编程语言 >[Python手撕]二叉搜索树中的众数

[Python手撕]二叉搜索树中的众数

时间:2024-10-16 11:11:27浏览次数:6  
标签:count cur val Python root self 众数 树中

给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。

如果树中有不止一个众数,可以按 任意顺序 返回。

假定 BST 满足如下定义:

结点左子树中所含节点的值 小于等于 当前节点的值
结点右子树中所含节点的值 大于等于 当前节点的值
左子树和右子树都是二叉搜索树

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def findMode(self, root: Optional[TreeNode]) -> List[int]:

        def inorder(root):
            if root:
                inorder(root.left)
                
                if root.val == self.cur_val:
                    self.cur_count += 1
                else:
                    self.cur_val = root.val
                    self.cur_count = 1
                
                if self.cur_count == self.count:
                    self.res.append(self.cur_val)
                elif self.cur_count > self.count:
                    self.count = self.cur_count
                    self.res = [self.cur_val]

                inorder(root.right)

        self.cur_val = root.val
        self.cur_count = 0

        self.count = 0
        self.res = []

        inorder(root)

        return self.res

标签:count,cur,val,Python,root,self,众数,树中
From: https://www.cnblogs.com/DCFV/p/18469443

相关文章

  • python+eel入门示例
    安装eelpipinstalleelpyimporteelimportrandom#笑话列表jokes=["为什么电脑经常生病?因为窗户(Windows)总是开着!","为什么数学书看起来总是很悲伤?因为它里面有太多的问题(problems)","为什么海洋里没有电脑?因为它们总是遇到短路(seals)","为什么冰......
  • [Python手撕]环形子数组的最大和
    给定一个长度为n的环形整数数组nums,返回nums的非空子数组的最大可能和。环形数组意味着数组的末端将会与开头相连呈环状。形式上,nums[i]的下一个元素是nums[(i+1)%n],nums[i]的前一个元素是nums[(i-1+n)%n]。子数组最多只能包含固定缓冲区nums中......
  • Python 数据库备份脚本
    importdatetimeimportosimportsubprocess#数据库备份目录BACKUP_DIR='/path/to/backup'#备份文件保留周期(天)RETENTION_PERIOD=7#备份数据库defbackup_database():current_time=datetime.datetime.now()backup_file=f"backup_{current_time.strf......
  • python从0快速上手(十一)高级特性1
    Python学习:高级特性1在Python的奇妙世界里,高级特性就像是那些隐藏在角落里的神秘力量,等待着勇敢的程序员去发掘。装饰器、生成器和迭代器,这些听起来就像是古老魔法书中的咒语,但它们其实是Python中强大的编程工具。让我们一起揭开这些高级特性的神秘面纱,看看它们如何让我们......
  • 【新人系列】Python 入门(二):Python IDE 介绍
    ✍个人博客:https://blog.csdn.net/Newin2020?type=blog......
  • python pandas写入excel
    #--coding:utf-8--importdatetimeimportpandasaspdfromcommon_toolimportget_ip_areafromdb.mysqlConnectionimportMyPymysqlPoolfromdb_configimportdata_report_dbsex_dict={"-1":"未知","0":"女&......
  • python 实现旋转图片算法
    旋转图片算法介绍旋转图片算法是图像处理中常用的一种技术,它可以将图像中的对象旋转到特定的角度。这种算法在图像处理、计算机视觉、人工智能等领域都有广泛的应用,例如自动驾驶、医学影像、安防监控等场景。以下是旋转图片算法的基本步骤:确定旋转中心点:旋转操作通常围绕......
  • python爬虫之cookie管理
    Cookie处理在Web开发中,Cookie是一种常用的技术,用于在Web服务器和浏览器之间存储和传输数据。Cookie通常包含有关用户会话、首选项和其他信息的键值对。     Request库的get()方法的语法是:requests.get(url,params=None,**kwargs))url:想要获取的网页的链接。params:url的额......
  • python datetime.datetime.now() 北京时间
    pythondatetime.datetime.now()北京时间 ===================要获取北京时间(中国标准时间,UTC+8),可以使用datetime模块中的datetime和timedelta类。以下是一个简单的函数,用于获取北京时间:fromdatetimeimportdatetime,timedelta defget_beijing_time():   #获取UTC......
  • 大数据时代下,Python爬虫已然成为了副业赚钱的首选目标!
    前言今年又是难找工作的一年。中小企业倒闭、裁员、失业...因为大环境不好,人心也变得越来越焦虑,深怕下一个不幸者会是自己。在这样的现实面前,「副业搞钱」逐渐成了人们的刚需,有一份失业了依旧有收入、不出门也依然有收入的副业,是未来几年最大的底气。暴风雨随时会来,只......