์ถ์ฒ
ChatGPT
์ด์ง ํธ๋ฆฌ(Binary Tree)๋ ๊ฐ ๋ ธ๋๊ฐ ์ต๋ ๋ ๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ ํธ๋ฆฌ ๊ตฌ์กฐ์ด๋ค. ์ด ํธ๋ฆฌ ๊ตฌ์กฐ๋ ์ปดํจํฐ ๊ณผํ์์ ๋งค์ฐ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์๋ฃ ๊ตฌ์กฐ ์ค ํ๋์ด๋ฉฐ, ๋ฐ์ดํฐ์ ๊ณ์ธต์ ๊ด๊ณ๋ฅผ ๋ํ๋ด๊ฑฐ๋ ํจ์จ์ ์ธ ๊ฒ์, ์ฝ์ , ์ญ์ ์ฐ์ฐ์ ์ง์ํ๋ ๋ฐ ์ ์ฉํ๋ค.
์ด์ง ํธ๋ฆฌ์ ๊ธฐ๋ณธ ๊ฐ๋
๋ฃจํธ ๋ ธ๋ Root Node
ํธ๋ฆฌ์ ์ต์์์ ์๋ ๋ ธ๋์ด๋ค. ํธ๋ฆฌ๋ ์ด ๋ ธ๋๋ฅผ ์์์ผ๋ก ๋ค๋ฅธ ๋ ธ๋๋ค๊ณผ ์ฐ๊ฒฐ๋๋.
์์ ๋ ธํธ Child Node
ํน์ ๋ ธํธ์์ ๋ฐ๋ก ์๋์ ์ฐ๊ฒฐ๋ ๋ ธ๋์ด๋ค. ์ด์ ํธ๋ฆฌ์์๋ ์ผ์ชฝ ์์ ๋ ธ๋์ ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๋ก ๊ตฌ๋ถ๋๋ค.
๋ถ๋ชจ ๋ ธ๋ Parent Node
์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ ธ๋์ด๋ค. ์์๊ณผ ๋ถ๋ชจ๋ ์๋ก ๊ณ์ธต์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋ค.
์ ๋ ธ๋ Leaf Node
์์ ๋ ธ๋๋ฅผ ๊ฐ์ง์ง ์๋, ์ฆ ํธ๋ฆฌ์ ๋ง๋จ์ ์์นํ ๋ ธ๋์ด๋ค.
์๋ธํธ๋ฆฌ Subtree
์ด์ง ํธ๋ฆฌ์ ํน์ ๋ ธ๋๋ฅผ ๋ฃจํธ๋ก ํ๋ ํธ๋ฆฌ ๋ถ๋ถ์ด๋ค.
์ด์ง ํธ๋ฆฌ์ ํน์ง
๋ ธ๋ ์
๋์ด๊ฐ h์ธ ์ด์ง ํธ๋ฆฌ์ ์ต๋ ๋ ธ๋ ์๋ 2^h -1 ๊ฐ์ด๋ค. ์๋ฅผ ๋ค์ด, ๋์ด๊ฐ 3์ธ ํธ๋ฆฌ์ ์ต๋ ๋ ธ๋ ์๋ 2^3 -1 = 7 ๊ฐ์ด๋ค.
ํฌํ ์ด์ง ํธ๋ฆฌ Full Binary Tree
๋ชจ๋ ๋ ธ๋๊ฐ 0๊ฐ ๋๋ 2๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ ์ด์ง ํธ๋ฆฌ์ด๋ค.
์์ ์ด์ง ํธ๋ฆฌ Complete Binary Tree
๋ชจ๋ ๋ก๋ฒจ์์ ๋ ธ๋๊ฐ ๊ฝ ์ฐจ ์์ผ๋ฉฐ, ๋ง์ง๋ง ๋ ๋ฒจ์์๋ ์ผ์ชฝ์์๋ถํฐ ์ฐจ๋ก๋๋ก ๋ ธ๋๊ฐ ์ฑ์์ ธ ์๋ ํธ๋ฆฌ์ด๋ค.
๊ท ํ ์ด์ง ํธ๋ฆฌ Balanced Binary Tree
์ข์ฐ ์๋ธํ๋ฆฌ์ ๋์ด ์ฐจ์ด๊ฐ 1 ์ดํ์ธ ์ด์ง ํธ๋ฆฌ์ด๋ค. ๊ท ํ์ ์ ์งํจ์ผ๋ก์จ ๊ฒ์ ๋ฐ ์ฝ์ /์ญ์ ์ฐ์ฐ์ด ํจ์จ์ ์ผ๋ก ์ํ๋๋ค.
์ด์ง ํธ๋ฆฌ์ ์ข ๋ฃ
1. ํฌํ ์ด์ง ํธ๋ฆฌ Full Binary Tree
๊ฐ ๋ ธ๋๊ฐ 0๊ฐ ๋๋ 2๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ๋๋ค.
๋ชจ๋ ๋ฆฌํ ๋ ธ๋๊ฐ ๋์ผํ ๊น์ด์ ์๋ค.
1
/ \
2 3
/ \ / \
4 5 6 7
2. ์์ ์ด์ง ํธ๋ฆฌ Complete Binary Tree
๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ ๋ชจ๋ ๋ ๋ฒจ์ด ๊ฝ ์ฐจ ์์ผ๋ฉฐ, ๋ง์ง๋ง ๋ ๋ฒจ์ ๋ ธ๋๋ ์ผ์ชฝ์์๋ถํฐ ์ฑ์์ง๋ค.
1
/ \
2 3
/ \ /
4 5 6
3. ์ด์ง ์ฐธ์ ํธ๋ฆฌ Binary Search Tree, BST
์ผ์ชฝ ์์ ๋ ธ๋๋ ๋ถ๋ชจ๋ณด๋ค ์๊ณ , ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๋ ๋ถ๋ชจ๋ณด๋ค ํฌ๋ค
๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌ๋ ํํ๋ก ์ ์ฅํ์ฌ ๊ฒ์, ์ฝ์ , ์ญ์ ๊ฐ ํจ์จ์ ์ผ๋ก ์ํ๋๋ค.
8
/ \
3 10
/ \ \
1 6 14
/ \ /
4 7 13
4. ๊ท ํ ์ด์ง ํธ๋ฆฌ Balanced Binary Tree
์ข์ฐ ์๋ธํธ๋ฆฌ์ ๋์ด ์ฐจ์ด๊ฐ 1 ์ดํ๋ก ๊ท ํ์ ์ ์งํ๋ ํธ๋ฆฌ์ด๋ค.
๋ ๋-๋ธ๋ ํธ๋ฆฌ(Red-Black Tree), AVL ํธ๋ฆฌ ๋ฑ์ด ๊ท ํ ์ด์ง ํธ๋ฆฌ์ ์์ด๋ค.
์ด์ง ํธ๋ฆฌ์ ์ํ Traversal
์ด์ง ํธ๋ฆฌ์์๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ ์์์ ๋ฐ๋ผ ๋ค์ํ ์ํ ๋ฐฉ๋ฒ์ด ์๋ค.
์์ ์ด์ง ํธ๋ฆฌ
1
/ \
2 3
/ \
4 5
1. ์ ์ ์ํ(Pre-order Traversal)
- ๋ฃจํธ -> ์ผ์ชฝ ์๋ธํธ๋ฆฌ -> ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ ์์๋ก ๋ฐฉ๋ฌธํ๋ค.
- ์์ : 1,2,4,5,3
2. ์ค์ ์ํ(In-order Traversal)
- ์ผ์ชฝ ์๋ธํธ๋ฆฌ -> ๋ฃจํธ -> ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ ์์๋ก ๋ฐฉ๋ฌธํ๋ค.
- ์์ : 4,2,5,1,3
3. ํ์ ์์(Post-order Traversal)
- ์ผ์ชฝ ์๋ธํธ๋ฆฌ -> ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ -> ๋ฃจํธ ์์๋ก ๋ฐฉ๋ฌธํ๋ค.
- ์์ : 4,5,2,3,1
4. ๋ ๋ฒจ ์ํ(Level-order Traversal)
- ํธ๋ฆฌ์ ๊ฐ ๋ ๋ฒจ์ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์์๋๋ก ๋ฐฉ๋ฌธํ๋ค.
- ์์ : 1,2,3,4,5
์ด์ง ํธ๋ฆฌ์ ์๊ฐ ๋ณต์ก๋
์ด์ง ํธ๋ฆฌ์์ ์ฃผ์ ์ฐ์ฐ์ ์๊ฐ ๋ณต์ก๋๋ ํธ๋ฆฌ์ ๋์ด์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ค. ํธ๋ฆฌ๊ฐ ๊ท ํ์ ์ ์งํ ๋, ์ด์ง ํธ๋ฆฌ์ ๋์ด๋ O(lon n)์ด ๋๋ฉฐ, ๋๋ถ๋ถ์ ์ฐ์ฐ(ํ์, ์ฝ์ , ์ญ์ )์ ์๊ฐ ๋ณต์ก๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ํ์: O(log n) (๊ท ํ ์กํ ํธ๋ฆฌ์ผ ๊ฒฝ์ฐ)
- ์ฝ์ : O(log n)
- ์ญ์ : O(log n)
๊ทธ๋ฌ๋ ํธ๋ฆฌ๊ฐ ํ์ชฝ์ผ๋ก ์น์ฐ์น ๊ฒฝ์ฐ์๋ ์ต์ ์ ๊ฒฝ์ฐ ์๊ฐ ๋ณต์ก๋๊ฐ O(n)์ด ๋ ์ ์๋ค.
์ด์ง ํธ๋ฆฌ์ ์์ฉ
์ด์ง ํ์ ํธ๋ฆฌ BST
์ ๋ ฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ํ์, ์ฝ์ , ์ญ์ ํ๊ธฐ ์ํ ํธ๋ฆฌ
ํ Heap
์ฐ์ ์์ ํ๋ฅผ ๊ตฌํํ ๋ ์ฌ์ฉํ๋ ์์ ์ด์ง ํธ๋ฆฌ
ํํ๋งํธ๋ฆฌ
๋ฐ์ดํฐ ์์ถ ์๊ณ ๋ฆฌ์ฆ์์ ์ฌ์ฉํ๋ ํธ๋ฆฌ ๊ตฌ์กฐ
'๋น ๊ตฌ๋ฉ ์ฑ์ฐ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ ๊ตฌ์กฐ] ์ด์ง ํ์ ํธ๋ฆฌ Binary search Tree, BST (0) | 2024.09.09 |
---|---|
[์๋ฃ ๊ตฌ์กฐ] ์คํ ํธ๋ฆฌ Skewed Tree (0) | 2024.09.09 |
[์๋ฃ๊ตฌ์กฐ] ๊ตฌ๋ฌธ ํธ๋ฆฌ Syntax Tree, ์ถ์ ๊ตฌ๋ฌธ ํธ๋ฆฌ AST, Abstract Syntax Tree (0) | 2024.09.04 |
[์๋ฃ๊ตฌ์กฐ] ํธ๋ฆฌ Tree (0) | 2024.09.04 |
[Java] ์ ์บ์คํ , ๋ค์ด์บ์คํ (0) | 2024.09.04 |