首页 > 其他分享 >Leedcode-二叉搜索树中的众数

Leedcode-二叉搜索树中的众数

时间:2024-05-19 15:42:31浏览次数:20  
标签:cur res Leedcode queue dict 众数 save 树中 节点

自己写的:

class Solution:
    # findMode方法接受一个二叉树的根节点root,并返回一个列表,其中包含树中出现次数最多的值
    def findMode(self, root: Optional[TreeNode]) -> List[int]:
        # 初始化一个队列,用于层次遍历二叉树
        queue = [root]
        # 初始化一个字典save_dict,用于保存每个节点值出现的次数
        save_dict = {}

        # 进行层次遍历,直到队列为空
        while queue:
            # 从队列中弹出当前节点
            cur = queue.pop()
            # 如果当前节点的值不在save_dict中,则将其添加进去,并设置计数为1
            if not save_dict.get(cur.val):
                save_dict[cur.val] = 1
            # 如果当前节点的值已经在save_dict中,则增加其计数
            else:
                save_dict[cur.val] += 1

            # 如果当前节点有左子节点,则将其添加到队列中
            if cur.left:
                queue.append(cur.left)
            # 如果当前节点有右子节点,则将其添加到队列中
            if cur.right:
                queue.append(cur.right)

        # 初始化一个列表res,用于保存出现次数最多的值
        res = []

        # 使用max函数找出save_dict中出现次数最多的值
        maxValue = max(save_dict.values())

        # 遍历save_dict中的所有键值对
        for k, v in save_dict.items():
            # 如果某个值的出现次数等于maxValue,则将其添加到res列表中
            if v == maxValue:
                res.append(k)

        # 返回包含出现次数最多的值的列表
        return res

 

标签:cur,res,Leedcode,queue,dict,众数,save,树中,节点
From: https://www.cnblogs.com/yyyjw/p/18200389

相关文章

  • Leedcode-键盘行
    自己写的:classSolution:#定义findWords方法,该方法接受一个字符串列表words作为参数deffindWords(self,words:List[str])->List[str]:#定义三个字符串,分别包含键盘上三行的字母str1="qwertyuiopQWERTYUIOP"#第一行字母str2=......
  • Leedcode-下一个更大元素 I
    自己写的:classSolution:defnextGreaterElement(self,nums1:List[int],nums2:List[int])->List[int]:res=[]#结果列表,用于存储每个nums1中元素在nums2中的下一个更大元素num1_ptr=0#指向nums1当前元素的指针num2_ptr=0#......
  • Leedcode-提莫攻击
    自己写的,中间算法有遗漏的遍历classSolution:deffindPoisonedDuration(self,timeSeries:List[int],duration:int)->int:ifduration==0:#如果duration为0,则返回0,因为没有中毒时间return0count=0#初始化中毒总时间......
  • Leedcode-构造矩形
    自己写的classSolution:defconstructRectangle(self,area:int)->List[int]:#计算给定面积的平方根root=area**0.5#初始化结果列表,默认为[1,area],即长为面积,宽为1的情况temp=[1,area]#如果面积是一个完全......
  • Leedcode-最大连续 1 的个数
    自己写的:fromtypingimportListclassSolution:deffindMaxConsecutiveOnes(self,nums:List[int])->int:#初始化最大连续1的计数器和临时连续1的计数器count=0temp=0#获取列表长度n=len(nums)#初......
  • 分治思想求众数_虽然效率不好_但是便于学习分治的思想方法
    //解释:/*采用分治法的思想在这道题中的体现就是对于一个区间去分成两份,然后count函数的作用是对于一个区间段的函数去进行统计某个数的个数find函数的作用是负责把区间分开,然后对比两个区间中的出现次数更多的数,把这个数作为这两个区间合成的区间的众数。对比的依据就是count......
  • Leedcode-密钥格式化
    自己写的:classSolution:deflicenseKeyFormatting(self,s:str,k:int)->str:#将字符串转换为列表,方便操作new_S=list()#遍历输入字符串foriins:#如果当前字符不是'-',则添加到新列表中ifi!......
  • Leedcode-数字的补数
    自己写的:classSolution:deffindComplement(self,num:int)->int:#初始化一个空字符串,用于存储二进制表示bin_str=''#将输入的数字转换为二进制表示,存储在bin_str中whilenum>0:bin_str=str(num......
  • 450. 删除二叉搜索树中的节点(leetcode)
    https://leetcode.cn/problems/delete-node-in-a-bst/要点是确定函数语义,单层递归逻辑,确定好有返回值的这种写法,分析出5种情况,递归的时候接收好递归的返回的新树的根节点即可classSolution{//函数语义(单层递归逻辑):查找要删除的节点,并且返回删除节点后新的树的......
  • Leedcode-岛屿的周长
    自己写的:classSolution:defislandPerimeter(self,grid:List[List[int]])->int:#初始化周长计数器count=0#遍历二维网格的行foriinrange(len(grid)):#遍历二维网格的列forjinrange(len(gr......