Search

Find Mode in Binary Search Tree

문제 설명 : 주어진 트리에서 가장 많이 존재하는 Node 값을 반환
풀이 방법
트리를 순회 시, 해시 테이블을 사용하여 각 값이 몇 번 존재하는지 카운팅하였다.
시간복잡도 : O(N)O(N)
성공 코드
# 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
복사