์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- GenerativeAI
- ์๊ณ ๋ฆฌ์ฆ
- nlp
- stratascratch
- medium
- ํ์ด์ฌ์๊ณ ๋ฆฌ์ฆ
- ์์ฐ์ด์ฒ๋ฆฌ
- ๋ฆฌํธ์ฝ๋
- Blazor
- dfs
- Python3
- Python
- ํฌํฌ์ธํฐ
- Microsoft
- ํ์ด์ฌ๊ธฐ์ด100์
- two-pointer
- gcp
- slidingwindow
- codeup
- ์ฌ๋ผ์ด๋ฉ์๋์ฐ
- ์์ฑํAI
- ๊ตฌ๊ธํต๋ฉ
- LeetCode
- ํ์ด์ฌ
- ์ฝ๋์
- ๋ฆฟ์ฝ๋
- GenAI
- ๋ํธ์ฝ๋
- sql์ฝํ
- SQL
Archives
- Today
- Total
Tech for good
[Leetcode/Tree] 501. Find Mode in Binary Search Tree ๋ณธ๋ฌธ
IT/Computer Science
[Leetcode/Tree] 501. Find Mode in Binary Search Tree
Diana Kang 2025. 3. 14. 23:07
- mode: ์ต๋น๊ฐ
๐น Binary Search Tree(์ด์ง ํ์ ํธ๋ฆฌ, BST)๋?
- ์ด์ง ํธ๋ฆฌ์ ํ ์ข
๋ฅ์ด๋ฉฐ, ๋
ธ๋์ ๋ฐฐ์น์ ํน์ ํ ๊ท์น์ด ์ ์ฉ๋๋ค:
- ์ผ์ชฝ ์๋ธํธ๋ฆฌ์ ๋ชจ๋ ๊ฐ์ ํ์ฌ ๋ ธ๋๋ณด๋ค ์์์ผ ํ๋ค.
- ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์ ๋ชจ๋ ๊ฐ์ ํ์ฌ ๋ ธ๋๋ณด๋ค ์ปค์ผ ํ๋ค.
- ์ด ๊ท์น ๋๋ถ์ ํ์(๊ฒ์), ์ฝ์ , ์ญ์ ๋ฑ์ ์ฐ์ฐ์ด ํจ์จ์ (ํ๊ท O(log n))์ผ๋ก ์ํ๋๋ค.

๐น ์ค์ ์ํ(In-order Traversal)๋?
์ด์ง ํ์ ํธ๋ฆฌ(BST)์์ ์ค์ ์ํ(In-order Traversal) ๋ฅผ ์ํํ๋ฉด ๊ฐ์ด ์ค๋ฆ์ฐจ์(ascending order)์ผ๋ก ์ ๋ ฌ๋ ์์๋ก ๋ฐฉ๋ฌธ๋๋ค.
๐ ์ค์ ์ํ ์์
- ์ผ์ชฝ ์๋ธํธ๋ฆฌ ํ์
- ํ์ฌ ๋ ธ๋ ๋ฐฉ๋ฌธ
- ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ ํ์
๐น ์์ ํธ๋ฆฌ
์๋์ ๊ฐ์ BST๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
4
/ \
2 6
/ \ \
1 3 7
์ค์ ์ํ(In-order Traversal) ์คํ ๊ฒฐ๊ณผ:
1 โ 2 โ 3 โ 4 โ 6 โ 7 (์ค๋ฆ์ฐจ์)
์ฆ, BST๋ In-order Traversal์ ํ๋ฉด ์ ๋ ฌ๋ ์ํ๋ก ๊ฐ์ด ๋์ค๋ฏ๋ก, ์ด์ ๊ฐ๊ณผ ํ์ฌ ๊ฐ์ ๋น๊ตํ๋ฉด์ ์ต๋น๊ฐ์ ์ฐพ์ ์ ์์!
# 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
class Solution:
def findMode(self, root: Optional[TreeNode]) -> List[int]:
if not root:
return []
self.current_val = None
self.current_count = 0
self.max_count = 0
self.modes = []
def inorder_traversal(node):
if node is None:
return
# 1. ์ผ์ชฝ ์๋ธํธ๋ฆฌ ํ์
inorder_traversal(node.left)
# 2.1. ํ์ฌ ๋
ธ๋ ๋ฐฉ๋ฌธ
if node.val == self.current_val:
self.current_count += 1
else:
self.current_val = node.val
self.current_count = 1
# 2.2. mode(s) ๊ฐฑ์
if self.current_count > self.max_count:
self.max_count = self.current_count
self.modes = [node.val]
elif self.current_count == self.max_count:
self.modes.append(node.val)
# 3. ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ ํ์
inorder_traversal(node.right)
# 4. ์ค์ ์ํ ์์
inorder_traversal(root)
return self.modes
'IT > Computer Science' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Leetcode/Tree] 222. Count Complete Tree Nodes (0) | 2025.03.17 |
---|---|
[Neetcode/Tree] Binary Tree Level Order Traversal (0) | 2025.03.14 |
[Neetcode/Tree] Lowest Common Ancestor in Binary Search Tree (0) | 2025.03.12 |
[Leetcode/Tree] 404. Sum of Left Leaves (0) | 2025.03.12 |
[Leetcode/Sliding Window] 2760. Longest Even Odd Subarray With Threshold (0) | 2025.03.08 |