501. 二叉搜索树中的众数
"""
501. 二叉搜索树中的众数
给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。
假定 BST 有如下定义:
结点左子树中所含结点的值小于等于当前结点的值
结点右子树中所含结点的值大于等于当前结点的值
左子树和右子树都是二叉搜索树
例如:
给定 BST [1,null,2,2],
1
\
2
/
2
返回[2].
"""
class Solution(object):
def findMode(self, root):
count_value = {}
def pre_order(root1):
if not root1: return
count_value[root1.val] = count_value.get(root1.val, 0) + 1
pre_order(root1.left)
pre_order(root1.right)
pre_order(root)
new_value = sorted(count_value.items(), key=lambda kv: (kv[1]), reverse=True)
if len(new_value) < 1:
return []
elif len(new_value) == 1:
return [new_value[0][0]]
else:
max_value = new_value[0][1]
res = []
for key, value in new_value:
if value == max_value:
res.append(key)
return res
class TreeNode(object):
def __init__(self, val):
self.val = val
self.left = None
self.right = None
if __name__ == "__main__":
root = TreeNode(1)
root.right = TreeNode(2)
root.right.left = TreeNode(2)
res = Solution().findMode(root)
print(res)
posted on 2021-12-13 10:09 random_boy 阅读(28) 评论(0) 收藏 举报
浙公网安备 33010602011771号