501. 二叉搜索树中的众数(简单)

https://leetcode.cn/problems/find-mode-in-binary-search-tree/

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

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

假定 BST 满足如下定义:
结点左子树中所含节点的值 小于等于 当前节点的值
结点右子树中所含节点的值 大于等于 当前节点的值
左子树和右子树都是二叉搜索树

示例 1:
501. 二叉搜索树中的众数(简单)_第1张图片
输入:root = [1,null,2,2]
输出:[2]

class Solution:
    def findMode(self, root: Optional[TreeNode]) -> List[int]:
        # 星级:☆☆☆
        # 方法:遍历二叉树+中序遍历+二叉搜索树特性
        # 思路:利用中序遍历完成树的变量,借助外部列表接收数据,形成升序数组
        # 再利用Counter获取每个值个数,再排序返回结果
        from collections import Counter
        lst, result = [], []
        def traverse(node):
            if not node:
                return
            traverse(node.left)
            lst.append(node.val)
            traverse(node.right)
        traverse(root)
        dic = Counter(lst)
        sorts = sorted(dic.items(), key=lambda x: -x[1])
        for k, v in sorts:
            if v == sorts[0][1]:
                result.append(k)
        return result

你可能感兴趣的:(二叉树,python,数据结构,算法,leetcode)