501. 二叉搜索树中的众数
程序员文章站
2022-03-03 11:14:05
...
给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。
假定 BST 有如下定义:
结点左子树中所含结点的值小于等于当前结点的值
结点右子树中所含结点的值大于等于当前结点的值
左子树和右子树都是二叉搜索树
例如:
给定 BST [1,null,2,2],1
\
2
/
21.有序数组求众数这里有点坑啊
# 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
上一篇: 二叉树构建、深度遍历、广度优先遍历
下一篇: 禁忌搜索算法求解TSP
推荐阅读