์ถ์ฒ
ChatGPT
์ด์ง ํ์ ํธ๋ฆฌ๋ ์ด์ง ํธ๋ฆฌ์ ํ ์ข ๋ฅ๋ก, ๊ฐ ๋ ธ๋์ ์ ์ฅ๋ ๊ฐ์ด ํน์ ๊ท์น์ ๋ฐ๋ฅด๋ฉฐ ์ ๋ ฌ๋ ์ํ๋ฅผ ์ ์งํ๋ ํธ๋ฆฌ์ด๋ค. ์ด ๊ท์น ๋๋ถ์ ๋น ๋ฅธ ๊ฒ์, ์ฝ์ , ์ญ์ ์ฐ์ฐ์ด ๊ฐ๋ฅํ์ฌ, ๋ฐ์ดํฐ์ ํจ์จ์ ์ธ ๊ด๋ฆฌ๋ฅผ ์ ๊ณตํ๋ค.
- ๊ด๋ จ ๊ธ -> [์๋ฃ ๊ตฌ์กฐ] ์ด์ง ํธ๋ฆฌ Binary Tree
- ๊ด๋ จ ๊ธ -> [๋น ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ] - [์๋ฃ๊ตฌ์กฐ] ํธ๋ฆฌ Tree
1. ๊ตฌ์กฐ
์ด์ง ํ์ ํธ๋ฆฌ์ ๊ฐ ๋ ธ๋๋ ์ต๋ ๋ ๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ค. ๊ฐ ๋ ธ๋๋ ํธ๋ฆฌ์ ํน์ ๊ท์น์ ๋ฐ๋ผ ๋ฐฐ์น๋๋ค.
๊ท์น
1. ์ผ์ชฝ ์์ ๋ ธ๋ : ๋ถ๋ชจ ๋ ธ๋๋ณด๋ค ์์ ๊ฐ
2. ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋ : ๋ถ๋ชจ ๋ ธ๋๋ณด๋ค ํฐ ๊ฐ
์ด ๊ท์น์ผ๋ก ์ธํด ํธ๋ฆฌ์ ์ด๋ ์ง์ ์์๋ ์ผ์ชฝ ์๋ธํธ๋ฆฌ๋ ๋ถ๋ชจ๋ค ์์ ๊ฐ๋ค๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๋ ๋ถ๋ชจ๋ณด๋ค ํฐ ๊ฐ๋ค๋ก ์ด๋ฃจ์ด์ ธ ์์ด, ํ์์ด ๋งค์ฐ ๋น ๋ฅด๊ฒ ์ด๋ฃจ์ด์ง ์ ์๋ค.
์์
50
/ \
30 70
/ \ / \
20 40 60 80
- ์ผ์ชฝ ์์ ๋ ธ๋ : ๋ถ๋ชจ ๋ ธ๋๋ณด๋ค ์์ ๊ฐ(์: 30์ 50๋ณด๋ค ์๋ค)
- ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋ : ๋ถ๋ชจ ๋ ธ๋๋ณด๋ค ํฐ ๊ฐ(์: 70์ 50๋ณด๋ค ํฌ๋ค)
2. ์ฐ์ฐ ๋ฐ ์๊ฐ ๋ณต์ก๋
BST์ ์ฃผ์ ์ฐ์ฐ์ ํ์, ์ฝ์ , ์ญ์ ์ด๋ค. ์ด๋ค์ ๋ชจ๋ ํธ๋ฆฌ์ ๋์ด์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฉฐ, ์ต์ ์ ๊ฒฝ์ฐ์ ์ต์ ์ ๊ฒฝ์ฐ๊ฐ ๋๋์ด ์๋ค.
(1) ํ์ Search
ํธ๋ฆฌ์ ๋ฃจํธ์์ ์์ํด, ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ด ํ์ฌ ๋ ธ๋๋ณด๋ค ์์ผ๋ฉด ์ผ์ชฝ์ผ๋ก, ํฌ๋ฉด ์ค๋ฅธ์กฑ์ผ๋ก ์ด๋ํ๋ค.
์ด ๊ณผ์ ์ ๋ฐ๋ณตํด ๊ฐ์ด ์๋ ๋ ธ๋๋ฅผ ์ฐพ๋๋ค.
์๊ฐ ๋ณต์ก๋
ํ๊ท : O(log n)
ํธ๋ฆฌ๊ฐ ๊ท ํ์ ์ ์งํ ๊ฒฝ์ฐ, ํธ๋ฆฌ์ ๋์ด๋ log n์ ๋น๋กํ๋ฏ๋ก, ํ์์ log n ๋จ๊ณ์์ ๋๋๋ค.
์ต์ ์ ๊ฒฝ์ฐ : O(n)
ํธ๋ฆฌ๊ฐ ํ ์ชฝ์ผ๋ก ์น์ฐ์ณ์ง ๊ฒฝ์ฐ(์ฆ, ์คํ ํธ๋ฆฌ(Skewed Tree)), ๋ฆฌ์คํธ์ ๊ฐ์ ๊ตฌ์กฐ๊ฐ ๋์ด ํ์์ ์ต๋ n ๋จ๊ณ๋ฅผ ๊ฑฐ์น ์ ์๋ค.
์์
50
/ \
30 70
/ \ / \
20 40 60 80
ํด๋น ํธ๋ฆฌ์์ 40์ ์ฐพ์ผ๋ ค๋ฉด, 50 -> 30 -> 40 ์์๋ก ํ์ํ๋ค.
(2) ์ฝ์ Insertion
์ฝ์ ํ ๊ฐ์ ํ์ํด ์ ์ ํ ์์น(์ผ์ชฝ ๋๋ ์ค๋ฅธ์ชฝ)์ ์ฝ์ ํ๋ค.
์๋ก์ด ๋ ธ๋๋ฅผ ํญ์ ๋ฆฌํ ๋ ธ๋๋ก ์ฝ์ ๋๋ค.
์๊ฐ๋ณต์ก๋
ํ๊ท : O(log n)
ํธ๋ฆฌ๊ฐ ๊ท ํ์ ์ด๋ฃจ๊ณ ์๋ค๋ฉด, ์ฝ์ ๊ณผ์ ๋ log n ๋จ๊ณ์์ ๋๋๋ค.
์ต์ ์ ๊ฒฝ์ฐ : O(n)
ํธ๋ฆฌ๊ฐ ํ ์ชฝ์ผ๋ก ์น์ฐ์ณ ์์ ๋, ๋ฆฌ์คํธ์ ๊ฐ์ ๊ตฌ์กฐ๊ฐ ๋์ด ์ฝ์ ์ n ๋จ๊ณ๋ฅผ ๊ฑฐ์น ์ ์๋ค.
์์
50
/ \
30 70
/ \ / \
20 40 60 80
/
(+35)
ํด๋น ํธ๋ฆฌ์ 35๋ฅผ ์ฝ์ ํ๋ ค๋ฉด, 50 -> 30 -> 40๊น์ง ํ์ํด 40์ ์ผ์ชฝ ์์์ผ๋ก 35๋ฅผ ์ฝ์ ํ๋ค.
(3) ์ญ์ Deletion
์ญ์ ํ ๋ ธ๋๋ฅผ ์ฐพ๊ณ , ์ธ ๊ฐ์ง ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์ญ์ ๋ฅผ ์ฒ๋ฆฌํ๋ค.
1. ์์์ด ์๋ ๊ฒฝ์ฐ : ๋จ์ํ ์ญ์
2. ์์์ด ํ๋์ผ ๊ฒฝ์ฐ : ์์ ๋ ธ๋๋ฅผ ๋ถ๋ชจ์ ์ฐ๊ฒฐํ ๋ค ์ญ์
3. ์์์ด ๋ ๊ฐ์ธ ๊ฒฝ์ฐ :๋์ฒด ๋ ธ๋๋ฅผ ์ฐพ๋๋ค. ๋์ฒดํ ๋ ธ๋๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ ์ค์ ํ๋๋ฅผ ์ฌ์ฉํ๋ค.
- ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์์ ๊ฐ์ฅ ์์ ๊ฐ(ํ์์): ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์์ ๊ฐ์ฅ ์์ ๊ฐ์ ์ฐพ์์ ๋์ฒดํ๋ค.
- ์ผ์ชฝ ์๋ธํธ๋ฆฌ์์ ๊ฐ์ฅ ํฐ ๊ฐ(์ ์์) : ์ผ์ชฝ ์๋ธํธ๋ฆฌ์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ฐพ์ ๋์ฒดํ๋ค.
์๊ฐ ๋ณต์ก๋
ํ๊ท : O(log n)
ํธ๋ฆฌ๊ฐ ๊ท ํ์ ์ ์งํ๊ณ ์์ผ๋ฉด ์ญ์ ๋ log n์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
์ต์ ์ ๊ฒฝ์ฐ : O(n)
ํธ๋ฆฌ๊ฐ ํ ์ชฝ์ผ๋ก ์น์ฐ์ณ ์์ ๋, ์ญ์ ์ ์ต๋ n ๋จ๊ณ๊ฐ ๊ฑธ๋ฆด ์ ์๋ค.
์์
50
/ \
30 70
/ \ / \
20 40 60 80
ํด๋น ํธ๋ฆฌ์์ 50์ ์ญ์ ํ๋ ค๊ณ ํ๋ค. ์ด ๊ฒฝ์ฐ, ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์์ ๊ฐ์ฅ ์์ ๊ฐ ๋๋ ์ผ์ชฝ ์๋ธํธ๋ฆฌ์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ฐพ์์ ๋์ฒดํ๋ค.
1. ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์์ ๊ฐ์ฅ ์์ ๊ฐ(ํ์์)๋ฅผ ์ฐพ๋ ๊ฒฝ์ฐ
์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ970, 60, 80)์์ฏ ๊ฐ์ฅ ์์ ๊ฐ์ 60์ด๋ค.
๋ฐ๋ผ์ 60์ ์ญ์ ํ 50 ๋ ธํธ์ ์์น๋ก ๊ฐ์ ธ์ค๊ณ , ๊ธฐ์กด ๋ฆฌํ ๋ ธ๋์ธ 60 ๋ ธ๋๋ ์ญ์ ํ๋ค.
์ต์ข ํธ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค
60
/ \
30 70
/ \ \
20 40 80
2. ์ผ์ชฝ ์๋ธํธ๋ฆฌ์์ ๊ฐ์ฅ ํฐ ๊ฐ(์ ์์)๋ฅผ ์ฐพ๋ ๊ฒฝ์ฐ
์ผ์ชฝ ์๋ธํธ๋ฆฌ์์ ๊ฐ์ฅ ํฐ ๊ฐ์ 40์ด๋ค.
40์ ์ญ์ ํ 50 ๋ ธ๋์ ์์น๋ก ๊ฐ์ ธ์ค๊ณ , ๊ธฐ์กด ๋ฆฌํ ๋ ธ๋์ธ 40 ๋ ธ๋๋ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ์์ ์ญ์ ํ๋ค.
์ต์ข ํธ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ๋ค.
40
/ \
30 70
/ / \
20 60 80
3. BST์ ์ฅ์ ๊ณผ ๋จ์
์ฅ์
๋น ๋ฅธ ํ์
์ ๊ท ํ์กํ BST๋ ํ์, ์ฝ์ , ์ญ์ ์ฐ์ฐ์์ O(log n)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
์ ๋ ฌ๋ ์์๋ก ์ ์ฅ
BST๋ ์ค์ ์ํ(In-order Traversal)๋ฅผ ํ๋ฉด ๋ชจ๋ ์์๋ฅผ ์ ๋ ฌ๋ ์์๋ก ์ป์ ์ ์๋ค.
๋จ์
ํธ๋ฆฌ์ ๊ท ํ ๋ฌธ์
์ผ๋ฐ์ ์ธ BST๋ ์ฝ์ ์์์ ๋ฐ๋ผ ํธ๋ฆฌ๊ฐ ํ์ชฝ์ผ๋ก ์น์ฐ์ณ์ง ์ ์๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด O(n)์ผ๋ก ์ ํ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๊ฐ ๊ท ํ ์ด์ง ํ์ ํธ๋ฆฌ(๋ ๋-๋ธ๋ ํธ๋ฆฌ, AVL ํธ๋ฆฌ)๋ฅผ ์ฌ์ฉํ๋ค.
4. BST์ ์ํ Traversal
BST์์ ๋ ธ๋๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ ์ธ ๊ฐ์ง์ด๋ค.
1. ์ ์ ์ํ Pre-order Traversal
๋ฃจํธ -> ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ ์์๋ก ๋ฐฉ๋ฌธ
2. ์ค์ ์ํ In-order Traversal
์ผ์ชฝ -> ๋ฃจํธ -> ์ค๋ฅธ์ชฝ ์์๋ก ๋ฐฉ๋ฌธ
BST์์ ์ค์ ์ํ๋ ์ ๋ ฌ๋ ์์๋ฅผ ๋ฐํํ๋ค.
3. ํ์ ์ํ Post-order Traversal
์ผ์ชฝ -> ์ค๋ฅธ์ชฝ -> ๋ฃจํธ ์์๋ก ๋ฐฉ๋ฌธ
์ค์ ์ํ์ ์์
50
/ \
30 70
/ \ / \
20 40 60 80
์ค์ ์ํ ๊ฒฐ๊ณผ : 20, 30, 40, 50, 60, 70, 80
5. BST์ ์ต์ ์ ๊ฒฝ์ฐ
์ด์ง ํ์ ํธ๋ฆฌ๊ฐ ํ ์ชฝ์ผ๋ก ์น์ฐ์ณ์ง๋ ๊ฒฝ์ฐ, ํธ๋ฆฌ๋ ์ฌ์ค ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ์ ํํ๊ฐ ๋๋ค. ์ด ๊ฒฝ์ฐ ํ์, ์ฝ์ , ์ญ์ ์ ์๊ฐ ๋ณต์ก๋๋ O(n)๊น์ง ๋๋น ์ง๋ค.
์น์ฐ์ณ์ง ํธ๋ฆฌ(์คํ ํธ๋ฆฌ)์ ์
10
\
20
\
30
\
40
์ด ๊ฒฝ์ฐ ๊ฐ ์ฐ์ฐ์์ ๋ชจ๋ ๋ ธ๋๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ฏ๋ก, ์ฑ๋ฅ์ด ์ ํ๋๋ค.
6. ์๊ฐ ๊ท ํ ์ด์ง ํ์ ํธ๋ฆฌ์์ ์ฐจ์ด์
์ผ๋ฐ์ ์ธ ์ด์ง ํ์ ํธ๋ฆฌ๋ ์ฝ์ ์์์ ๋ฐ๋ผ ํธ๋ฆฌ๊ฐ ํ ์ชฝ์ผ๋ก ์น์ฐ์น ์ ์๊ธฐ ๋๋ฌธ์, ์๊ฐ ๊ท ํ ์ด์ง ํ์ ํธ๋ฆฌ(Self-Balancing Binary Search Tree)๊ฐ ํ์ํ๋ค. ์๊ฐ ๊ท ํ ํธ๋ฆฌ(์ - ๋ ๋-๋ธ๋ ํธ๋ฆฌ, AVL ํธ๋ฆฌ)๋ ์ฝ์ , ์ญ์ ํ์๋ ํธ๋ฆฌ๊ฐ ๊ท ํ์ ์ ์งํ์ฌ, ๋ชจ๋ ์ฐ์ฐ์์ O(log n)์ ์ฑ๋ฅ์ ๋ณด์ฅํ๋ค.
'๋น ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ ๊ตฌ์กฐ] ๋ ๋-๋ธ๋ ํธ๋ฆฌ Red-Black Tree (1) | 2024.09.09 |
---|---|
[์๋ฃ ๊ตฌ์กฐ] ์๊ฐ ๊ท ํ ์ด์ง ํ์ ํธ๋ฆฌ Self-Balancing Binary Search Tree (0) | 2024.09.09 |
[์๋ฃ ๊ตฌ์กฐ] ์คํ ํธ๋ฆฌ Skewed Tree (0) | 2024.09.09 |
[์๋ฃ ๊ตฌ์กฐ] ์ด์ง ํธ๋ฆฌ Binary Tree (0) | 2024.09.08 |
[์๋ฃ๊ตฌ์กฐ] ๊ตฌ๋ฌธ ํธ๋ฆฌ Syntax Tree, ์ถ์ ๊ตฌ๋ฌธ ํธ๋ฆฌ AST, Abstract Syntax Tree (0) | 2024.09.04 |