์ถ์ฒ
ChatGPT
์๊ฐ ๊ท ํ ์ด์ง ํ์ ํธ๋ฆฌ(Self-Balancing Binary Search Tree)๋ ์ฝ์ , ์ญ์ ๋ฑ์ ์ฐ์ฐ ํ์๋ ํญ์ ๊ท ํ์ ์ ์งํ๋ ์ด์ง ํ์ ํธ๋ฆฌ(BST, Binary Search Tree)์ด๋ค. ์๊ฐ ๊ท ํ ํธ๋ฆฌ๋ ํธ๋ฆฌ์ ๋์ด๊ฐ ์ง๋์น๊ฒ ์ปค์ง๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ, ๋ชจ๋ ์ฐ์ฐ(ํ์, ์ฝ์ , ์ญ์ )์ ์ฑ๋ฅ์ ์ผ์ ํ ์๊ฐ ๋ณต์ก๋๋ก ์ ์งํ ์ ์๋๋ก ์ค๊ณ๋์๋ค.
์ผ๋ฐ ์ ์ธ ์ด์ง ํ์ ํธ๋ฆฌ๋ ์ฝ์ ๋ฐ ์ญ์ ์ฐ์ฐ์ ์ํด ํ์ชฝ์ผ๋ก ์น์ฐ์ณ์ง(skewed) ํธ๋ฆฌ๊ฐ ๋ ์ ์๋ค. ์ด ๊ฒฝ์ฐ, ์ด์ง ํ์ ํธ๋ฆฌ์ ๋์ด๊ฐ n์ ๊ฐ๊น์์ ธ ์ต์ ์ ๊ฒฝ์ฐ O(n)์ ์ฑ๋ฅ์ ๊ฐ์ง๊ฒ ๋๋๋ฐ, ์๊ฐ ๊ท ํ ํธ๋ฆฌ๋ ์ด๋ฅผ ๋ฐฉ์งํ๋ค.
์ด์ง ํ์ ํธ๋ฆฌ์ ๊ธฐ๋ณธ ๊ฐ๋
์ด์ง ํ์ ํธ๋ฆฌ๋ ๊ฐ ๋ ธ๋๊ฐ ์ต๋ ๋ ๊ฐ์ ์์์ ๊ฐ์ง๋ ํธ๋ฆฌ ๊ตฌ์กฐ์ด๋ค. ์ด ๋, ํน์ ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ์์ ๋ ธ๋๋ ๊ทธ๋ณด๋ค ์์ ๊ฐ, ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๋ ๊ทธ๋ณด๋ค ํฐ ๊ฐ์ ๊ฐ์ง๋ค.
- ์ผ์ชฝ ์์ ๋ ธ๋ : ๋ถ๋ชจ ๋ ธ๋๋ณด๋ค ๊ฐ์ด ์๋ค
- ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋ : ๋ถ๋ชจ ๋ ธ๋๋ณด๋ค ๊ฐ์ด ํฌ๋ค
์ ๊ท ํ์ด ์ค์ํ ๊น?
์ด์ง ํ์ ํธ๋ฆฌ์์ ๊ฒ์, ์ฝ์ , ์ญ์ ์ฐ์ฐ์ ์๊ฐ ๋ณต์ก๋๋ ํธ๋ฆฌ์ ๋์ด์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค. ์ด์์ ์ธ ๊ฒฝ์ฐ, ์ด์ง ํ์ ํธ๋ฆฌ์ ๋์ด๋ O(log n)์ผ๋ก, ๋งค์ฐ ๋น ๋ฅธ ํ์ ๋ฐ ์์ ์ด ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ํธ๋ฆฌ๊ฐ ๊ท ํ์ ์์ผ๋ฉด ์ต์ ์ ๊ฒฝ์ฐ ๋ชจ๋ ๋ ธ๋๊ฐ ํ ์ชฝ์ผ๋ก ์น์ฐ์ณ ๋ฆฌ์คํธ์ ๊ฐ์ ํํ๊ฐ ๋์ด ์๊ฐ ๋ณต์ก๋๊ฐ O(n)๊น์ง ๋๋น ์ง ์ ์๋ค.
์์ : ์ด์ง ํ์ ํธ๋ฆฌ์์ ์น์ฐ์ณ์ง ๊ฒฝ์ฐ
1
\
2
\
3
\
4
์ด์ ๊ฐ์ ํธ๋ฆฌ๋ ์ฌ์ค์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ค๋ฅผ ๋ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์, ํ์, ์ฝ์ , ์ญ์ ์ฐ์ฐ์ด ๋นํจ์จ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค. ์๊ฐ ๊ท ํ ์ด์ง ํ์ ํธ๋ฆฌ๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋์ผ๋ก ํธ๋ฆฌ์ ๊ท ํ์ ์ ์งํ๋ค.
์๊ฐ ๊ท ํ ์ด์ง ํ์ ํธ๋ฆฌ์ ๋์ ์๋ฆฌ
์๊ฐ ๊ท ํ ์ด์ง ํ์ ํธ๋ฆฌ๋ ํธ๋ฆฌ์ ์ฝ์ , ์ญ์ ์์ ์๋์ผ๋ก ํธ๋ฆฌ์ ๊ท ํ์ ๋ง์ถ๋ ๋งค์ปค๋์ฆ์ ๊ฐ์ง๊ณ ์๋ค. ์ด ๊ณผ์ ์ ํ์ ๊ณผ ์ฌ๋ฐฐ์น ๋ฑ์ ํตํด ์ด๋ค์ง๋ค. ๋ํ์ ์ธ ์๊ฐ ๊ท ํ ํธ๋ฆฌ๋ก๋ ๋ ๋-๋ธ๋ ํธ๋ฆฌ, AVL ํธ๋ฆฌ ๋ฑ์ด ์๋ค.
์ฃผ์ ์๊ฐ ๊ท ํ ํธ๋ฆฌ ์ข ๋ฅ
1. ๋ ๋-๋ธ๋ ํธ๋ฆฌ Red-Black Tree
ํธ๋ฆฌ์ ๋ ธ๋๋ฅผ ๋ ๋์ ๋ธ๋์ผ๋ก ์์น ํ๊ณ , ํน์ ๊ท์น์ ์ ์ฉํด ํธ๋ฆฌ๊ฐ ํ ์ชฝ์ผ๋ก ์น์ฐ์น๋ ๊ฒ์ ๋ฐฉ์งํ๋ค.
์ฝ์ ๋ฐ ์ญ์ ํ ํ์ ์ด๋ ์์ ๋ณ๊ฒฝ์ ํตํด ๊ท ํ์ ๋ง์ถ๋ค.
์๋ฐ์ TreeSet, TreeMap์ ๋ ๋-๋ธ๋ ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
2. AVL ํธ๋ฆฌ
์ฝ์ ๋ฐ ์ญ์ ํ ๊ฐ ๋ ธ๋์ ๊ท ํ ์ธ์(๋์ด ์ฐจ)๋ฅผ ํ์ธํด ํธ๋ฆฌ์ ๊ท ํ์ ์ ์งํ๋ค.
๋์ด ์ฐจ๊ฐ 1 ์ด์ ๋๋ฉด ์ข์ฐ ํ์ ์ ํตํด ๊ท ํ์ ์ ์งํ๋ค.
์๊ฐ ๊ท ํ ํธ๋ฆฌ์ ์ฅ์
1. ํญ์ O(log n)์ ์ฑ๋ฅ ๋ณด์ฅ
์๊ฐ ๊ท ํ ํธ๋ฆฌ๋ ์ฝ์ , ์ญ์ ๋ฑ์ ์ฐ์ฐ์ด ๋ฐ๋ณต๋์ด๋ ํธ๋ฆฌ์ ๊ท ํ์ ์ ์งํ๋ฏ๋ก, ๊ฒ์, ์ฝ์ , ์ญ์ ๋ชจ๋ O(log n) ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ณด์ฅํ๋ค.
2. ํจ์จ์ ํ์
ํญ์ ๊ท ํ์ ์ ์งํ๋ฏ๋ก ํ์ ์ฐ์ฐ์ด ๋งค์ฐ ํจ์จ์ ์ด๋ค. ๋ฐ์ดํฐ๊ฐ ๋ง์์ง๋๋ผ๋ ์ฑ๋ฅ์ด ๊ธ๊ฒฉํ ๋จ์ด์ง์ง ์๋๋ค.
'๋น ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] TreeSet ๊ตฌํ (1) | 2024.09.10 |
---|---|
[์๋ฃ ๊ตฌ์กฐ] ๋ ๋-๋ธ๋ ํธ๋ฆฌ Red-Black Tree (1) | 2024.09.09 |
[์๋ฃ ๊ตฌ์กฐ] ์ด์ง ํ์ ํธ๋ฆฌ Binary search Tree, BST (0) | 2024.09.09 |
[์๋ฃ ๊ตฌ์กฐ] ์คํ ํธ๋ฆฌ Skewed Tree (0) | 2024.09.09 |
[์๋ฃ ๊ตฌ์กฐ] ์ด์ง ํธ๋ฆฌ Binary Tree (0) | 2024.09.08 |