๋ฐ์ํ
ํธ๋ฆฌ(Tree)
- ๋ ธ๋๋ค์ด ๋๋ฌด ๊ฐ์ง์ฒ๋ผ ์ฐ๊ฒฐ๋ ๋น์ ํ ๊ณ์ธต์ ์๋ฃ๊ตฌ์กฐ
- ๊ณ์ธต์ ์ธ ์๋ฃ๋ฅผ ํํํ๋๋ฐ ์ด์ฉ
- ๋ ธ๋(node)๋ค๊ณผ ๋ ธ๋๋ค์ ์ฐ๊ฒฐํ๋ ๊ฐ์ (edge)๋ค๋ก ๊ตฌ์ฑ
- ํ๋์ ๋ฃจํธ๋ ธ๋๋ฅผ ๊ฐ์ง
ํธ๋ฆฌ์ ๊ด๋ จ๋ ์ฉ์ด
๋ ธ๋(node)
- ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ ๊ธฐ๋ณธ์์
- ๋ ธ๋์๋ ํค ๋๋ ๊ฐ๊ณผ ํ์ ๋ ธ๋์ ๋ํ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง๊ณ ์์
๊ฐ์ (edge)
- ๋ ธ๋์ ๋ ธ๋ ๊ฐ์ ์ฐ๊ฒฐ์ (link, branch๋ผ๊ณ ๋ ๋ถ๋ฆ)
๋ฃจํธ ๋ ธ๋(root node)
- ๋ถ๋ชจ๊ฐ ์๋ ์ต์์ ๋ ธ๋, ํธ๋ฆฌ๋ ํ๋์ ๋ฃจํธ ๋ ธ๋๋ง์ ๊ฐ์ง (A)
๋ถ๋ชจ ๋ ธ๋(parent node)
- ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง ๋ ธ๋ (H, I์ ๋ถ๋ชจ ๋ ธ๋๋ D)
์์ ๋ ธ๋(child node)
- ๋ถ๋ชจ ๋ ธ๋์ ํ์ ๋ ธ๋ (๋ ธ๋ D์ ์์ ๋ ธ๋๋ H, I)
ํ์ ๋ ธ๋(sibling node)
- ๊ฐ์ ๋ถ๋ชจ๋ฅผ ๊ฐ์ง๋ ๋ ธ๋ (H, I๋ ๊ฐ์ ๋ถ๋ชจ๋ฅผ ๊ฐ์ง๋ ํ์ฌ ๋ ธ๋)
์ธ๋ถ ๋ ธ๋(external node, outer node), ๋จ๋ง ๋ ธ๋ (terminal node), ๋ฆฌํ ๋ ธ๋(leaf node)
- ์์์ด ์๋ ๋ ธ๋ (H, I, J, F, G)
๋ด๋ถ ๋ ธ๋ (internal node, inner node), ๋น ๋จ๋ง ๋ ธ๋ (non-terminal node), ๊ฐ์ง ๋ ธ๋ (branch node)
- ๋จ๋ง ๋ ธ๋๊ฐ ์๋ ๋ ธ๋, ์์ ๋ ธ๋๋ฅผ ํ๋ ์ด์ ๊ฐ์ง ๋ ธ๋ (A, B, C, D, E)
ํฌ๊ธฐ(size)
- ์์ ์ ํฌํจํ ๋ชจ๋ ์์ ๋ ธ๋์ ๊ฐ์
- B์ ํฌ๊ธฐ: 6
๊น์ด(depth)
- ๋ฃจํธ์์ ์ด๋ค ๋ ธ๋์ ๋๋ฌํ๊ธฐ ์ํด ๊ฑฐ์ณ์ผ ํ๋ ๊ฐ์ ์ ์
- ๋ฃจํธ ๋ ธ๋์ ๊น์ด: 0, D์ ๊น์ด: 2
๋์ด(height)
- ์ด๋ค ๋ ธ๋์์ ๋ฆฌํ ๋ ธ๋๊น์ง ๊ฐ์ฅ ๊ธด ๊ฒฝ๋ก์ ๊ฐ์ (Edge) ์
- ๋ฆฌํ ๋ ธ๋์ ๋์ด : 0, A ๋ ธ๋์ ๋์ด : 3
๋ ๋ฒจ(level)
- ๋ฃจํธ์์ ์ด๋ค ๋ ธ๋๊น์ง์ ๊ฐ์ (Edge) ์
์ฐจ์(degree)
- ๋ ธ๋์ ์์ ์
- Leaf node์ degree : 0; A์ degree : 2
๊ฒฝ๋ก(path)
- ํ ๋ ธ๋์์ ๋ค๋ฅธ ํ ๋ ธ๋์ ์ด๋ฅด๋ ๊ธธ ์ฌ์ด์ ๋์ฌ์๋ ๋ ธ๋๋ค์ ์์
- A & H ๊ฒฝ๋ก : A-B-D-H
path length
- ํด๋น ๊ฒฝ๋ก์ ์๋ ์ด๋ ธ๋์ ์
- A & H ๊ฒฝ๋ก ๊ธธ์ด : 4
width
- ๋ ๋ฒจ์ ์๋ ๋ ธ๋ ์
- Level 2 width : 4
breadth
- ๋ฆฌํ ๋ ธ๋์ ์
- Breadth : 5
distance
- ๋ ๋ ธ๋ ์ฌ์ด์ ์ต๋จ ๊ฒฝ๋ก์ ์๋ ๊ฐ์ (Edge)์ ์
- D์ J์ Distance : 3
order
- ๋ถ๋ชจ ๋ ธ๋๊ฐ ๊ฐ์ง ์ ์๋ ์ต๋ ์์์ ์
- Order 3 : ๋ถ๋ชจ ๋ ธ๋๋ ์ต๋ 3๋ช ์ ์์์ ๊ฐ์ง ์ ์๋ค.
์๋ธ ํธ๋ฆฌ(sub tree)
- ํธ๋ฆฌ ๋ด์ ํ์ ์งํฉ (๋ถ๋ถ ์งํฉ)
- D, H, I ๊ฐ ํ๋์ ์๋ธ ํธ๋ฆฌ
ํธ๋ฆฌ์ ํน์ง
- ๊ทธ๋ํ์ ํ ์ข ๋ฅ์ด๋ฉฐ ‘์ต์ ์ฐ๊ฒฐ ํธ๋ฆฌ’๋ผ๊ณ ๋ ๋ถ๋ฆผ
- ํธ๋ฆฌ๋ DAG(Directed Acyclic Graphs, ๋ฐฉํฅ์ฑ์ด ์๋ ๋น์ํ ๊ทธ๋ํ)์ ํ ์ข ๋ฅ
- ๋จ์ ์ํ(Loop)์ ๊ฐ์ง ์๊ณ , ์ฐ๊ฒฐ๋ ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ ๊ตฌ์กฐ
- ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ ๋น์ ํ ์๋ฃ๊ตฌ์กฐ
- ๋ ธ๋๊ฐ N๊ฐ์ธ ํธ๋ฆฌ๋ ํญ์ N-1๊ฐ์ ๊ฐ์ (edge)์ ๊ฐ์ง
- ๋ ธ๋ ๊ฐ์ ๋ถ๋ชจ ์์ ๊ด๊ณ๋ฅผ ๊ฐ๊ณ ์๋ ๊ณ์ธตํ ์๋ฃ๊ตฌ์กฐ์ด๋ฉฐ ๋ชจ๋ ์์ ๋ ธ๋๋ ํ๋์ ๋ถ๋ชจ ๋ ธ๋๋ง ๊ฐ์ง
- ๋ถ๋ชจ-์์ ๊ด๊ณ์ด๋ฏ๋ก ํ๋ฆ์ top-bottom ์๋๋ฉด bottom-top์ผ๋ก ์ด๋ฃจ์ด์ง
- ์ํ๋ Pre-order, In-order ์๋๋ฉด Post-order๋ก ์ด๋ฃจ์ด์ง
- ์ ์ ์ํ(Pre-order traverse): ๋ฃจํธ -> ์ผ์ชฝ ์์ ๋ ธ๋ -> ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋ ์์๋ก ๋ฐฉ๋ฌธํ๋ ์ํ ๋ฐฉ๋ฒ
- ์ค์ ์ํ(In-order traverse): ์ผ์ชฝ ์์ ๋ ธ๋ -> ๋ฃจํธ -> ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋ ์์๋ก ๋ฐฉ๋ฌธํ๋ ์ํ ๋ฐฉ๋ฒ
- ํ์ ์ํ(Pre-order traverse): ์ผ์ชฝ ์์ ๋ ธ๋ -> ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋ -> ๋ฃจํธ ์์๋ก ๋ฐฉ๋ฌธํ๋ ์ํ ๋ฐฉ๋ฒ
ํธ๋ฆฌ์ ์ข ๋ฅ
์ด์ง ํธ๋ฆฌ (Binary Tree)
- ๋ชจ๋ ๋
ธ๋๊ฐ ์์์ ๋
ธ๋ ์๊ฐ 2๊ฐ ์ดํ์ธ ํธ๋ฆฌ
- ์ ์ด์ง ํธ๋ฆฌ(full binary tree): ์์ ๋ ธ๋๊ฐ 0 ๋๋ ๋ ๊ฐ์ธ ์ด์ง ํธ๋ฆฌ
- ์์ ์ด์ง ํธ๋ฆฌ(complete binary tree): ์ผ์ชฝ์์๋ถํฐ ์ฑ์์ ธ ์๋ ์ด์ง ํธ๋ฆฌ, ๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ ๋ชจ๋ ๋ ๋ฒจ์ด ์์ ํ ์ฑ์์ง, ๋ง์ง๋ง ๋ ๋ฒจ์ ๊ฒฝ์ฐ ์ผ์ชฝ๋ถํฐ ์ฑ์์ง
- ๋ณ์ง ์ด์ง ํธ๋ฆฌ(degenerate binary tree): ์์ ๋ ธ๋๊ฐ ํ๋๋ฐ์ ์๋ ์ด์ง ํธ๋ฆฌ
- ํฌํ ์ด์ง ํธ๋ฆฌ(perfect binary tree): ๋ชจ๋ ๋ ธ๋๊ฐ ๊ฝ ์ฐจ์๋ ์ด์ง ํธ๋ฆฌ
- ๊ท ํ ์ด์ง ํธ๋ฆฌ(balanced binary tree): ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ๋ ธ๋์ ๋์ด ์ฐจ์ด๊ฐ 1 ์ดํ์ธ ์ด์งํธ๋ฆฌ
์ด์ง ํ์ ํธ๋ฆฌ (Binary Search Tree, BST)
- ์์ํ๋ ์ด์ง ํธ๋ฆฌ
- ๋ ธ๋์ ์ผ์ชฝ ์์์ ๋ถ๋ชจ์ ๊ฐ๋ณด๋ค ์์ ๊ฐ์ ๊ฐ์ ธ์ผ ํ๋ฉฐ ๋ ธ๋์ ์ค๋ฅธ์ชฝ ์์์ ๋ถ๋ชจ์ ๊ฐ๋ณด๋ค ํฐ ๊ฐ์ ๊ฐ์ ธ์ผ ํจ
- ๊ฒ์์ ํ๊ธฐ์ ์ฉ์ด
- ๋ณดํต ์์๋ฅผ ์ฐพ์ ๋ O(logn), ์ต์
์ ๊ฒฝ์ฐ O(n)
- ์ฝ์ ์์์ ๋ฐ๋ผ ์ ํ์ ์ผ ์ ์์
AVL ํธ๋ฆฌ (Adelson-Velsky and Landis Tree)
- ์ด์ง ํ์ ํธ๋ฆฌ์ ์ต์ ์ ๊ฒฝ์ฐ ์ ํ์ ์ธ ํธ๋ฆฌ๊ฐ ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ ์ค์ค๋ก ๊ท ํ์ ์ก๋ ์ด์ง ํ์ ํธ๋ฆฌ
- ๋ ์์ ์๋ธํธ๋ฆฌ์ ๋์ด๋ ํญ์ ์ต๋ 1๋งํผ ์ฐจ์ด๊ฐ ๋จ
- ํ์, ์ฝ์ , ์ญ์ ๋ชจ๋ ์๊ฐ๋ณต์ก๋๊ฐ O(logn)
- ์ฝ์ , ์ญ์ ๋ฅผ ํ ๋๋ง๋ค ๊ท ํ์ ๋ง์ถ๊ธฐ ์ํด ํธ๋ฆฌ ์ผ๋ถ๋ฅผ ์ผ์ชฝ or ์ค๋ฅธ์ชฝ์ผ๋ก ํ์ ์ํค๋ฉฐ ๊ท ํ์ ์ก์
๋ ๋ ๋ธ๋ ํธ๋ฆฌ (Red-Black Tree)
- ์๊ฐ ๊ท ํ ์ด์ง ํ์ ํธ๋ฆฌ
- ํ์, ์ฝ์ , ์ญ์ ๋ชจ๋ ์๊ฐ๋ณต์ก๋๊ฐ O(logn)
- ๊ฐ ๋ ธ๋๋ ๋นจ๊ฐ์ ๋๋ ๊ฒ์์์ ์์์ ๋ํ๋ด๋ ์ถ๊ฐ ๋นํธ๋ฅผ ์ ์ฅํ์ฌ ์ฝ์ ๋ฐ ์ญ์ ์ค์ ํธ๋ฆฌ๊ฐ ๊ท ํ์ ์ ์ง๋ ๋ฐ ์ฌ์ฉ
- ๋ค์๊ณผ ๊ฐ์ ์กฐ๊ฑด์ ๋ง์กฑ
- ๋ชจ๋ ๋ ธ๋๋ ๋นจ๊ฐ์ ํน์ ๊ฒ์์
- ๋ฃจํธ ๋ ธ๋๋ ๊ฒ์์
- ๋ชจ๋ ๋จ๋ง ๋ ธ๋๋ค์ ๊ฒ์์
- ๋นจ๊ฐ์ ๋
ธ๋์ ์์์ ๊ฒ์์
- No Double Red(๋นจ๊ฐ์ ๋ ธ๋๊ฐ ์ฐ์์ผ๋ก ๋์ฌ ์ ์์)
- ๋ชจ๋ ๋จ๋ง ๋
ธ๋์์ Black Depth๋ ๊ฐ์
- ๋จ๋ง ๋ ธ๋์์ ๋ฃจํธ ๋ ธ๋๊น์ง ๊ฐ๋ ๊ฒฝ๋ก์์ ๋ง๋๋ ๊ฒ์์ ๋ ธ๋์ ๊ฐ์๊ฐ ๊ฐ์
๋ฐ์ํ
'๐ Computer Science > Data Structure' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] ์ฐ์ ์์ ํ(Priority Queue) (0) | 2023.03.13 |
---|---|
[์๋ฃ๊ตฌ์กฐ] ํ(Heap) (0) | 2023.03.13 |
[์๋ฃ๊ตฌ์กฐ] ๊ทธ๋ํ(Graph) (0) | 2023.03.08 |
[์๋ฃ๊ตฌ์กฐ] Time Complexity (์๊ฐ ๋ณต์ก๋) (0) | 2023.03.07 |
[์๋ฃ๊ตฌ์กฐ] ํ(Queue) (0) | 2023.03.06 |