Leedcode-二叉搜索树中的众数

自己写的:

复制代码
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
复制代码

 

posted @   Junior_bond  阅读(3)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示