•
문제 설명 : 주어진 트리에서 가장 많이 존재하는 Node 값을 반환
•
풀이 방법
◦
트리를 순회 시, 해시 테이블을 사용하여 각 값이 몇 번 존재하는지 카운팅하였다.
•
시간복잡도 :
•
성공 코드
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
from collections import defaultdict
class Solution:
max_count = 0
def findMode(self, root: Optional[TreeNode]) -> List[int]:
count_info = defaultdict(int)
self.search_tree(root, count_info)
return [k for k, v in count_info.items() if v == self.max_count]
def search_tree(self, node, count_info):
if not node:
return
if node.left:
self.search_tree(node.left, count_info)
if node.right:
self.search_tree(node.right, count_info)
count_info[node.val] += 1
self.max_count = max(self.max_count, count_info[node.val])
Python
복사