自己写的:
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
标签:cur,res,Leedcode,queue,dict,众数,save,树中,节点 From: https://www.cnblogs.com/yyyjw/p/18200389