1. ํธ๋ฆฌ ๊ตฌ์กฐ์ ๊ฐ๋
ํธ๋ฆฌ ๊ตฌ์กฐ๋ ๊ณ์ธต์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก, ๋ถ๋ชจ-์์ ๊ด๊ณ๋ฅผ ๊ฐ์ง ์ฌ๋ฌ ๊ฐ์ ๋ ธ๋(node)๋ก ์ด๋ฃจ์ด์ง๋ค. ์ด ๊ตฌ์กฐ๋ ๋๋ฌด๋ฅผ ๋ค์ง์ด ์ธ์ด ํํ์ ์ ์ฌํ๋ค๊ณ ๋น์ ํ ์ ์๋ค. ํธ๋ฆฌ ๊ตฌ์กฐ์์๋ ๋งจ ์์ ์์นํ ๋ ธ๋๋ฅผ ๋ฃจํธ(root)๋ผ๊ณ ํ๊ณ , ๊ฐ ๋ ธ๋๋ ์๋ก ์ฐ๊ฒฐ๋ ๊ฐ์ง๋ก ํํ๋๋ค.
๊ฐ ๋ ธ๋๋ 0๊ฐ ์ด์์ ์์(child)์ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ์์ ๋ ธ๋๋ค์ ๋ค์ ์์์ ๊ฐ์ง ์ ์์ด ๊ณ์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ํ์ฑํ๋ค. ํ ๋ ธ๋๋ ํ๋์ ๋ถ๋ชจ(parent) ๋ ธ๋๋ฅผ ๊ฐ์ง๋ฉฐ, ๋ฃจํธ๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ ธ๋๋ค์ ๋ถ๋ชจ๋ก๋ถํฐ ๋ ๋ฆฝ์ ์ธ ๊ณ์ธต ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
ํธ๋ฆฌ๋ ํ์ค ์ธ๊ณ์์ ๋ง์ด ์ฌ์ฉ๋๋ ๊ฐ๋ ์ผ๋ก, ํ์ผ ์์คํ , ์กฐ์ง๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ํ์ฉ๋๋ค. ์ด๋ฌํ ํธ๋ฆฌ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ์ ๊ณ์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ํํํ๊ณ ํ์ํ๋ ๋ฐ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ค.
2. ํธ๋ฆฌ ๊ตฌ์กฐ์ ํน์ง
ํธ๋ฆฌ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ ํน์ง์ ๊ฐ์ง๊ณ ์๋ค:
- ๊ณ์ธต์ ๊ตฌ์กฐ: ํธ๋ฆฌ๋ ๋ถ๋ชจ-์์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ ๊ณ์ธต์ ์ธ ๊ตฌ์กฐ์ด๋ค. ๊ฐ ๋ ธ๋๋ ํ๋์ ๋ถ๋ชจ ๋ ธ๋์ 0๊ฐ ์ด์์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ค. ์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ณ์ธต์ ์ผ๋ก ํํํ๊ณ ๊ด๋ฆฌํ ์ ์๋ค.
- ์ ์ผํ ๋ฃจํธ ๋ ธ๋: ๋ชจ๋ ํธ๋ฆฌ๋ ๋จ ํ๋์ ๋ฃจํธ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ค. ๋ฃจํธ ๋ ธ๋๋ ๋ค๋ฅธ ๋ชจ๋ ๋ ธ๋๋ค์๊ฒ ์์ ๋ ธ๋๋ก์์ ์ญํ ์ ๋ด๋นํ๋ค.
- ์ฌ์ดํด ์์: ํธ๋ฆฌ ๊ตฌ์กฐ์์๋ ๋์ผํ ๋ ธ๋๋ฅผ ์ฌ๋ฌ ๋ฒ ๋ฐฉ๋ฌธํ์ง ์์ผ๋ฉฐ, ๋ ธ๋๋ค ๊ฐ์ ์ฌ์ดํด์ด ์กด์ฌํ์ง ์๋๋ค. ์ฌ์ดํด์ด ์์์ผ๋ก ์ธํด ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ด ์ ์ง๋๊ณ ๋ฌดํ ๋ฃจํ์ ๋น ์ง ์ํ์ด ์๋ค.
- ์ญ์์ผ๋ก ์ ๊ทผ ๋ถ๊ฐ: ๊ฐ ๋ ธ๋๋ ํ๋์ ๋ถ๋ชจ๋ฅผ ๊ฐ์ง๋ฉฐ, ๋ถ๋ชจ์์ ์์์ผ๋ก ์ ๊ทผํ๋ ๋ฐฉํฅ์ผ๋ก๋ง ์ด๋ํ ์ ์๋ค. ๋ฐ๋ผ์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ ์๋ฐฉํฅ์ผ๋ก ํ์ ๋๋ ์ญ์์ผ๋ก ์ ๊ทผํ ์ ์๋ค.
- ๋ค์ํ ์ฉ๋์ ์ ํฉ: ํธ๋ฆฌ ๊ตฌ์กฐ๋ ๋ค์ํ ๋ถ์ผ์์ ํ์ฉ๋ ์ ์๋ค. ํ์ผ ์์คํ ์์ ํด๋ ๊ตฌ์กฐ, ์กฐ์ง๋, ๋คํธ์ํฌ ๋ผ์ฐํ ํ ์ด๋ธ, ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ ๋ฑ์์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ค.
์ด๋ฌํ ํน์ง๋ค์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๋ฐ์ดํฐ์ ๊ณ์ธต์ ํํ๊ณผ ํ์์ ์ ํฉํ ์๋ฃ๊ตฌ์กฐ๋ก ๋ง๋ค์ด์ค๋ค.
3. ํธ๋ฆฌ ๊ตฌ์กฐ์ ๊ตฌ์ฑ ์์
ํธ๋ฆฌ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์ฑ ์์๋ก ์ด๋ฃจ์ด์ ธ ์๋ค:
- ๋ ธ๋ (Node): ํธ๋ฆฌ์ ๊ธฐ๋ณธ ๋จ์๋ก์, ๋ฐ์ดํฐ์ ํฌ์ธํฐ๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ๊ฐ ๋ ธ๋๋ ๊ฐ ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ์์ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- ๊ฐ์ (Edge): ๊ฐ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ์ ์ผ๋ก, ๋ถ๋ชจ ๋ ธ๋์ ์์ ๋ ธ๋ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค. ๊ฐ์ ์ ๋ฐฉํฅ์ฑ์ ๊ฐ์ง๋ฉฐ, ๋ถ๋ชจ์์ ์์์ผ๋ก ํฅํ๋ ๋ฐฉํฅ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
- ๋ฃจํธ (Root): ํธ๋ฆฌ์ ๋งจ ์์ ์์นํ ๋ ธ๋๋ก, ๋ค๋ฅธ ๋ชจ๋ ๋ ธ๋๋ค์๊ฒ ์์ ๋ ธ๋๋ก์์ ์ญํ ์ ํ๋ค. ํธ๋ฆฌ๋ ๋จ ํ๋์ ๋ฃจํธ๋ฅผ ๊ฐ์ง๋ค.
- ๋ถ๋ชจ (Parent): ์ด๋ค ๋ ธ๋์ ๋ฐ๋ก ์์ ์์นํ ๋ ธ๋๋ฅผ ๋ถ๋ชจ๋ผ๊ณ ํ๋ค. ๋ถ๋ชจ ๋ ธ๋๋ ์์ ๋ ธ๋๋ค์ ๊ฐ๋ฆฌํจ๋ค.
- ์์ (Child): ์ด๋ค ๋ ธ๋ ์๋์ ์์นํ ๋ ธ๋๋ค์ ์์์ด๋ผ๊ณ ํ๋ค. ํ ๋ ธ๋๋ 0๊ฐ ์ด์์ ์์์ ๊ฐ์ง ์ ์๋ค.
- ๋ฆฌํ (Leaf): ์ด๋ค ๋ ธ๋์ ์์์ด ์๋ ๋ ธ๋๋ฅผ ๋ฆฌํ ๋ ธ๋๋ผ๊ณ ํ๋ค. ๋ฆฌํ ๋ ธ๋๋ ๊ฐ์ฅ ํ์์์ ๋ง์ง๋ง์ ์์นํ ๋ ธ๋๋ก, ์์์ด ์๋ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
๋ ธ๋๋ค๊ณผ ๊ฐ์ ๋ค์ ์กฐํฉ์ผ๋ก ์ด๋ฃจ์ด์ง ํธ๋ฆฌ ๊ตฌ์กฐ๋ ๊ณ์ธต์ ์ธ ๋ฐ์ดํฐ ํํ๊ณผ ํ์์ ๊ฐ์ฅ ์ ํฉํ ์๋ฃ๊ตฌ์กฐ ์ค ํ๋๋ก ์ฌ์ฉ๋๋ค.
4. ํธ๋ฆฌ ๊ตฌ์กฐ์ ์ข ๋ฅ
ํธ๋ฆฌ ๊ตฌ์กฐ์๋ ๋ค์ํ ์ข ๋ฅ๊ฐ ์์ผ๋ฉฐ, ๊ฐ ์ข ๋ฅ๋ ํน์ ํ ๋ชฉ์ ์ ๋ง๊ฒ ์ค๊ณ๋์ด ์ฌ์ฉ๋๋ค. ์ฃผ์ํ ํธ๋ฆฌ ๊ตฌ์กฐ์ ์ข ๋ฅ๋ ๋ค์๊ณผ ๊ฐ๋ค:
- ์ด์ง ํธ๋ฆฌ (Binary Tree): ๊ฐ ๋ ธ๋๊ฐ ์ต๋ ๋ ๊ฐ์ ์์์ ๊ฐ์ง ์ ์๋ ํธ๋ฆฌ ๊ตฌ์กฐ์ด๋ค. ์ด์ง ํธ๋ฆฌ๋ ์ผ์ชฝ ์์๊ณผ ์ค๋ฅธ์ชฝ ์์์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ํ๊ณ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ด์ง ํธ๋ฆฌ๋ ์ฃผ๋ก ์ด์ง ํ์ ํธ๋ฆฌ, ํ ๋ฑ์ ์๋ฃ๊ตฌ์กฐ๋ก ํ์ฉ๋๋ค.
- ์ด์ง ํ์ ํธ๋ฆฌ (Binary Search Tree): ์ด์ง ํธ๋ฆฌ ์ค์์๋ ํน๋ณํ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ํธ๋ฆฌ ๊ตฌ์กฐ์ด๋ค. ์ผ์ชฝ ์์์ ๊ฐ์ ํด๋น ๋ ธ๋์ ๊ฐ๋ณด๋ค ์๊ณ , ์ค๋ฅธ์ชฝ ์์์ ๊ฐ์ ํด๋น ๋ ธ๋์ ๊ฐ๋ณด๋ค ํฌ๋ค๋ ์กฐ๊ฑด์ ๋ง์กฑํ๋ค. ๋ฐ๋ผ์ ์ด์ง ํ์ ํธ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ํ์ํ ์ ์๋ ์ค์ํ ์๋ฃ๊ตฌ์กฐ๋ก ์ฌ์ฉ๋๋ค.
- AVL ํธ๋ฆฌ: ๊ท ํ ์ด์ง ํ์ ํธ๋ฆฌ์ ํ๋๋ก, ๋์ด์ ๊ท ํ์ ์ ์งํ๊ธฐ ์ํด ์๋์ผ๋ก ๋ ธ๋๋ฅผ ํ์ ์ํค๋ ํธ๋ฆฌ ๊ตฌ์กฐ์ด๋ค. AVL ํธ๋ฆฌ๋ ์๋ฃ์ ์ถ๊ฐ ๋ฐ ์ญ์ ์์๋ ์๋์ผ๋ก ๊ท ํ์ ๋ง์ถ๊ธฐ ๋๋ฌธ์ ํญ์ ๋น ๋ฅธ ํ์ ์ฑ๋ฅ์ ์ ์งํ๋ค.
- B-ํธ๋ฆฌ (B-Tree): ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๋ฑ์ค ๊ตฌ์กฐ ์ค ํ๋๋ก, ์ผ์ ํ ์์์ ์๋ฅผ ๊ฐ๋ ๋ค์ฐจ์ ํ์ ํธ๋ฆฌ์ด๋ค. B-ํธ๋ฆฌ๋ ๋ ธ๋๋ง๋ค ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๊ณ , ํ์ ์์๋ ๋์ ํจ์จ์ ๋ณด์ฅํ๋ค.
- ํธ๋ผ์ด (Trie): ๋ฌธ์์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ฒ์ํ๊ธฐ ์ํ ํธ๋ฆฌ ๊ตฌ์กฐ์ด๋ค. ๊ฐ ๋ ธ๋์๋ ๋ฌธ์ ํ ๊ฐ๋ฅผ ์ ์ฅํ๋ฉฐ, ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ๊ธธ์ด์ง์๋ก ํจ์จ์ ์ธ ๊ฒ์์ด ๊ฐ๋ฅํ๋ค. ํธ๋ผ์ด๋ ์ฃผ๋ก ์๋ ์์ฑ, ์ฒ ์ ๊ฒ์ฌ ๋ฑ๊ณผ ๊ฐ์ ๋ฌธ์์ด ์ฒ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉ๋๋ค.
๊ฐ๊ฐ์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ ํน์ ํ ๋ฌธ์ ์ ์ต์ ํ๋ ์๋ฃจ์ ์ ์ ๊ณตํ๋ฉฐ, ๋ฐ์ดํฐ์ ์ ์ฅ ๋ฐ ํ์์ ์ ํฉํ ์๋ฃ๊ตฌ์กฐ๋ก ํ์ฉ๋๋ค.
5. ํธ๋ฆฌ ๊ตฌ์กฐ์ ํ์ฉ ์์
ํธ๋ฆฌ ๊ตฌ์กฐ๋ ๋ค์ํ ๋ถ์ผ์์ ํ์ฉ๋๋ฉฐ, ๊ทธ ์ค์์๋ ์ฃผ์ํ ์์๋ค์ ์ดํด๋ณด์:
1. ํ์ผ ์์คํ
ํ์ผ ์์คํ ์ ํ์ผ๊ณผ ํด๋๋ค์ ํจ์จ์ ์ผ๋ก ๊ตฌ์ฑํ๊ณ ์ ์ฅํ๊ธฐ ์ํด ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ค. ์ต์์ ํด๋๊ฐ ๋ฃจํธ ๋ ธ๋๋ก ์์ํ์ฌ ๊ฐ ํด๋๋ค์ด ์์ ๋ ธ๋๊ฐ ๋๋ ๊ตฌ์กฐ๋ก ํ์ผ๋ค์ ๊ณ์ธต์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค. ์ด๋ฌํ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํตํด ํ์ผ ๋ฐ ํด๋์ ํ์, ๋ณต์ฌ, ์ญ์ ๋ฑ์ ์์ ์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
2. ์ธํฐ๋ท ๋ผ์ฐํ
์ธํฐ๋ท์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ์ํด ๋ผ์ฐํฐ๋ค์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ค. ๋ผ์ฐํฐ๋ค์ ๊ฐ ๋ ธ๋๊ฐ ๋ค๋ฅธ ๋ ธ๋๋ก ํฅํ๋ ๊ฒฝ๋ก๋ฅผ ๊ฐ์ง๋ฉฐ, ์ด๋ฌํ ๊ฒฝ๋ก๋ค์ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋ค. ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํตํด ๋ฐ์ดํฐ์ ๋ผ์ฐํ ์ด ์ด๋ฃจ์ด์ง๋ฉฐ, ๋ชฉ์ ์ง๋ก ๊ฐ์ฅ ๊ฐ๊น์ด ๋ผ์ฐํฐ๋ฅผ ์ฐพ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋ค.
3. ๊ณ์ธต์ ๋ฐ์ดํฐ ๊ตฌ์กฐ
ํธ๋ฆฌ ๊ตฌ์กฐ๋ ๊ณ์ธต์ ์ธ ๋ฐ์ดํฐ๋ฅผ ํํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. ์กฐ์ง์ ์กฐ์ง๋, ํ๋ก์ ํธ์ ์ ๋ฌด ๊ตฌ์กฐ, ๋ถ๋ฅ์ฒด๊ณ ๋ฑ ๋ค์ํ ๋ฐ์ดํฐ์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ํธ๋ฆฌ๋ก ํํํ ์ ์๋ค. ์ด๋ฌํ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํตํด ๋ฐ์ดํฐ์ ๊ด๊ณ์ ๊ณ์ธต์ ๋ช ํํ ํํํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ํ๊ณ ๋ถ์ํ ์ ์๋ค.
4. ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ
ํธ๋ฆฌ ๊ตฌ์กฐ๋ ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ ๋ฐ์๋ ํ์ฉ๋๋ค. ์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ์ ๊ฒ์๊ณผ ์ ๋ ฌ์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค. AVL ํธ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ๋ฐ์ดํฐ์ ์ถ๊ฐ์ ์ญ์ ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค. B-ํธ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ๋ฑ์ค ๊ตฌ์กฐ๋ก ๋ง์ด ์ฌ์ฉ๋๋ฉฐ, ํธ๋ผ์ด๋ ๋ฌธ์์ด ์ฒ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉ๋๋ค.
ํธ๋ฆฌ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ์ ๊ณ์ธต์ ํํ ๋ฐ ํ์์ ํจ๊ณผ์ ์ด๋ฉฐ, ๋ค์ํ ๋ถ์ผ์์ ์ ์ฉํ๊ฒ ํ์ฉ๋๊ณ ์๋ค. ๋ฐ์ดํฐ์ ๊ตฌ์กฐ์ ํน์ฑ์ ๋ง๊ฒ ์ ์ ํ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ ํํ์ฌ ์ฌ์ฉํ๋ฉด ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ด๋ฆฌ์ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
๋๊ธ