自己寫的:
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