欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

501. 二叉搜索树中的众数

程序员文章站 2022-03-03 11:14:05
...

给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。

假定 BST 有如下定义:

结点左子树中所含结点的值小于等于当前结点的值
结点右子树中所含结点的值大于等于当前结点的值
左子树和右子树都是二叉搜索树
例如:
给定 BST [1,null,2,2],

   1
    \
     2
    /
   2

1.有序数组求众数这里有点坑啊

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution(object):
    def findMode(self, root):
        if not root:
            return []
        self.nums = []
        def f(t):
            if not t:
                return 
            f(t.left)
            self.nums.append(t.val)
            f(t.right)
        f(root)
        res = [self.nums[0]]
        max_len = 1
        cur = 1
        for i in range(1,len(self.nums)):
            if self.nums[i]==self.nums[i-1]:
                cur+=1
            else:
                cur = 1
            if max_len==cur:
                res.append(self.nums[i])
            elif cur > max_len:
                res = []
                res.append(self.nums[i])
                max_len = cur
        return res

 

相关标签: Leetcode