ํธ๋ฆฌ
-
์ฉ๋
-
์ฉ์ด ์ ๋ฆฌ
-
์ข ๋ฅ
-
์ด์ง ํธ๋ฆฌ
-
์ผ๋ฐ ํธ๋ฆฌ
-
์ค๋ ๋ ์ด์ง ํธ๋ฆฌ
-
-
๊ตฌํ
-
๋ฐฐ์ด ํํ๋ฒ
-
์ฐ๊ฒฐ๋ฆฌ์คํธ ํํ๋ฒ
-
-
ํธ๋ฆฌ ํ์ฉ
-
ํ์
-
์งํฉ ํํ
-
ํํ๋ง ์ฝ๋
-
ํธ๋ฆฌ
ํธ๋ฆฌ๋ ๊ทธ๋ํ์ ํ ์ข ๋ฅ๋ก ๋ฌด๋ฐฉํฅ ์ฐ๊ฒฐ ๋น์ํ ๊ทธ๋ํ(Connected Undirected Acyclic Graph)์ด๋ค. ๋ฃจํธ ๋ ธ๋๊ฐ ์กด์ฌํ๊ณ , ๋ฃจํธ ๋ ธ๋๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ ธ๋์ in-degree๊ฐ 1์ธ ๋ฐฉํฅ๊ทธ๋ํ๋ผ๊ณ ๋งํ ์๋ ์๋ค. ๊ณ์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ฉฐ ๊ทธ๋ํ์ ํ ์ข ๋ฅ์ด๋ฏ๋ก ๋น์ ํ ์๋ฃ๊ตฌ์กฐ์ ์ํ๋ค.
์ฉ๋
๊ณ์ธต์ ์ธ ์กฐ์ง์ ํํํ๊ธฐ ์ํด ์ฌ์ฉ๋๊ฑฐ๋, ์ปดํจํฐ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ / ์ธ๊ณต์ง๋ฅ์ decision tree ๋ฑ์ ์ด์ฉ๋๋ค. ๋ํ ์๋ฃ์ ํ์ / ์ ๋ ฌ / DB ๊ตฌ์ฑ์ด๋ ๋ถ์๊ตฌ์กฐ์ ์ค๊ณ ๋ฑ์์๋ ๋ค์ํ๊ฒ ์ด์ฉ๋๋ค.
(๊ฒฐ์ ํธ๋ฆฌ)(์ด์งํ์)
์ฉ์ด ์ ๋ฆฌ
- ๋ ธ๋ (node) : ํธ๋ฆฌ์ ๊ตฌ์ฑ์์์ด๋ค. ๊ทธ๋ํ๋ก ๋ฐ์ง์๋ฉด ์ ์ (vertex)์ ํด๋นํ๋ค.
- ๋ฃจํธ (root) : ๋ถ๋ชจ๊ฐ ์๋ ๋ ธ๋์ด๋ค.
- ์๋ธํธ๋ฆฌ (subtree) : ํ๋์ ๋ ธ๋์ ์์๋ค๋ก ์ด๋ฃจ์ด์ง ํธ๋ฆฌ์ด๋ค.
- ๋จ๋ง ๋ ธ๋ (leaf node) : ์์์ด ์๋ ๋ ธ๋์ด๋ค.
- ๋ ๋ฒจ (level) : ํธ๋ฆฌ์ ๊ฐ ์ธต์ ๋ํ๋ด๋ index์ด๋ค. ๋ฃจํธ๋ ธ๋๋ 0๋ ๋ฒจ์ด๋ฉฐ ์์์ผ๋ก ๋ด๋ ค๊ฐ ์๋ก 1์ฉ ๋์ด๋๋ค.
- ๋์ด (height) : ํธ๋ฆฌ์ ์ต๋ ๋ ๋ฒจ์ด๋ค. ํธ๋ฆฌ์ ์์ฑ์ด ์๋ ์ค๊ฐ ๋ ธ๋์ height๋ฅผ ๊ตฌํ๋ ค๋ฉด, ํด๋น ๋ ธ๋๊ฐ ๋ฃจํธ๋ ธ๋๊ฐ ๋๋ ์๋ธํธ๋ฆฌ์ height๋ฅผ ์ธก์ ํ๋ฉด ๋๋ค.
- ์ฐจ์ (degree) : ๋ ธ๋๊ฐ ๊ฐ์ง๊ณ ์๋ ์์ ๋ ธ๋์ ๊ฐฏ์์ด๋ค.
- ํฌ๋ฆฌ์คํธ (forest) : ์๋ธํธ๋ฆฌ๋ค์ ์งํฉ์ด๋ค.
์ข ๋ฅ
์ด์งํธ๋ฆฌ
๋ชจ๋ ๋ ธ๋์ ์ฐจ์๊ฐ 2 ์ดํ์ธ ํธ๋ฆฌ์ด๋ค.
<์ฑ์ง>
๋ ธ๋์ ๊ฐฏ์ | ๊ฐ์ ์ ๊ฐฏ์ | ๋ ๋ฒจ i์์ ๊ฐ์ง ์ ์๋ ์ต๋ ๋ ธ๋ ์ |
๋์ด k์ธ ํธ๋ฆฌ๊ฐ ๊ฐ์ง ์ ์๋ ์ต๋ ๋ ธ๋ ์ |
n๊ฐ์ ๋
ธ๋๋ฅผ ๊ฐ์ง๋ ์ด์ง ํธ๋ฆฌ์ ๋์ด |
n | n-1 | 2^(i-1) | 2^k-1 | ์ต์ ceil(log2(n+1)) ์ต๋ n |
๋ ธ๋์ ๊ฐฏ์๋ฅผ n๊ฐ๋ผ๊ณ ํ๋ฉด ์กด์ฌํ๋ ๊ฐ์ ์ ๊ฐฏ์๋ ๋ฃจํธ๋ ธ๋๋ฅผ ์ ์ธํ n-1๊ฐ์ด๋ค. (๋ ธ๋๋ง๋ค ๊ฐ์ ์ด ํ๋์ฉ ์๋ก๋ถํฐ ๋ด๋ ค์ค๊ธฐ ๋๋ฌธ์ด๋ค.)
<์ข ๋ฅ>
- ํฌํ ์ด์งํธ๋ฆฌ : ๋ ๋ฒจ l๊น์ง ๋ ธ๋๊ฐ ๋ชจ๋ ์ฑ์์ ธ์๋ ์ด์ง ํธ๋ฆฌ
- ์์ ์ด์งํธ๋ฆฌ : ๋ ๋ฒจ l-1 ๊น์ง๋ ๋ ธ๋๊ฐ ๋ชจ๋ ์ฑ์์ ธ์๊ณ ๋ ๋ฒจ l์์๋ ์ผ์ชฝ๋ถํฐ ์์๋๋ก ๋ ธ๋๊ฐ ์ฑ์์ ธ์๋ ์ด์งํธ๋ฆฌ
- ํธํฅ ์ด์งํธ๋ฆฌ : ๋์ด๊ฐ h์ผ ๋ h๊ฐ์ ๋ ธ๋๋ฅผ ํ ๋ฐฉํฅ์ผ๋ก๋ง ๊ฐ์ง๋ ์ด์งํธ๋ฆฌ
์ผ๋ฐ ํธ๋ฆฌ
์ด์ง ํธ๋ฆฌ๊ฐ ์๋ ํธ๋ฆฌ์ด๋ค.
์ฐธ๊ณ : ์ผ๋ฐ ํธ๋ฆฌ๋ฅผ ์ด์ง ํธ๋ฆฌ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ
- ์ผ๋ฐ ํธ๋ฆฌ A์ ์ฒซ๋ฒ์งธ ์์ ๋ ธ๋ ๊ฐ์ ๋ง์ ๋จ๊ธฐ๊ณ ๋๋จธ์ง ๊ฐ์ ์ ์ ๊ฑฐํ๋ค.
- ํ์ ๋ ธ๋๋ค์ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐํ๋ค.
- ์๊ณ๋ฐฉํฅ์ผ๋ก 45๋ ํ์ ํ์ฌ ๋ฃจํธ ๋ ธ๋๋ฅผ ๋ณ๊ฒฝํ๋ค.
์ค๋ ๋ ์ด์ง ํธ๋ฆฌ
๊ตฌํ
๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ๊ตฌํํ ์ ์๋ค.
๋ฐฐ์ด ํํ๋ฒ
ํฌํ ์ด์ง ํธ๋ฆฌ๋ผ๊ณ ๊ฐ์ ํ๊ณ , ๋
ธ๋์ index๋ฅผ ๋ถ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฐฐ์ด์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ธ๋ฑ์ค๋ ๋ถ๋ชจ ๋
ธ๋์ ์ธ๋ฑ์ค๋ฅผ floor(i/2)
๋ผ๊ณ ํ ๋, ์ผ์ชฝ ์์๋
ธ๋๋ 2*i
, ์ค๋ฅธ์ชฝ ์์๋
ธ๋๋ 2*i+1
์ด๋ค.
์ฐ๊ฒฐ๋ฆฌ์คํธ ํํ๋ฒ
ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ๋ชจ ๋ ธ๋๊ฐ ์์๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ด๋ค.
ํธ๋ฆฌ ํ์ฉ
ํ์
ํ์(== ์ํ)์ ํธ๋ฆฌ์ ๋ ธ๋๋ค์ ๋น ๋จ๋ฆฌ๊ฑฐ๋ ์ค๋ณตํ์ง ์๊ณ ๋ฐฉ๋ฌธํ๋ ๊ฒ์ ๋ปํ๋ค. ํธ๋ฆฌ์ ๊ธฐ๋ณธ์ ์ธ ์ํ ๋ฐฉ๋ฒ์๋ ๋ค์ 3๊ฐ์ง๊ฐ ์๋ค.
์ ํ ์๋ฃ๊ตฌ์กฐ์์์ ์ํ๋ ํ๊ฐ์ง ๋ฐฉ๋ฒ๋ง ์กด์ฌํ๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ ๋น์ ํ ์๋ฃ๊ตฌ์กฐ์์๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ํ๊ฐ ๊ฐ๋ฅํ๋ค.
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ํ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ์ 3๊ฐ์ง๊ฐ ์๋ค.
-
์ ์ ์ํ (preorder)
VLR ์์ผ๋ก ๋ถ๋ชจ๋ ธ๋๋ฅผ ๋จผ์ ์ํํ๋ ๋ฐฉ์์ด๋ค.
-
์ค์ ์ํ (inorder)
LVR ์์ผ๋ก ๋ถ๋ชจ๋ ธ๋๋ฅผ ์ค๊ฐ์ ์ํํ๋ ๋ฐฉ์์ด๋ค.
-
ํ์ ์ํ (postorder)
LRV ์์ผ๋ก ๋ถ๋ชจ๋ ธ๋๋ฅผ ๋ง์ง๋ง์ ์ํํ๋ ๋ฐฉ์์ด๋ค. ์์ํธ๋ฆฌ ๊ณ์ฐ ์ ์ฌ์ฉ๋๋ค.
(์์ํธ๋ฆฌ)
ํน์ดํ ์ํ๋ก๋ ๋ ๋ฒจ ์ํ๊ฐ ์๋ค.
-
๋ ๋ฒจ ์ํ (levelorder)
๋ ๋ฒจ ๋ณ๋ก 1->2->3->4->5->6 ์์ผ๋ก ์ํํ๋ค.
๊ทธ๋ํ์์ ๋ดค๋ ํ์ ๋ฐฉ๋ฒ์ธ DFS์ BFS๋ฅผ ํธ๋ฆฌ์์ ๊ตฌํํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
-
DFS
ํธ๋ฆฌ์์๋ ์ ์ํ์ ๋ฐฉ๋ฒ๊ณผ ๊ฐ๋ค.
-
BFS
ํธ๋ฆฌ์์๋ ๋ ๋ฒจ์ฐ์ ํ์ ๋ฐฉ๋ฒ๊ณผ ๊ฐ๋ค.
์งํฉ ํํ
์งํฉ ํํ์ ๊ด๋ จ๋ Union-Find ๋ฌธ์ ๋ ํธ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ํ ์ ์๋ค.
(Union-Find ๋ฌธ์ )
ํํ๋ง ์ฝ๋
(ํํ๋ง ์ฝ๋)
'์ปดํจํฐ๊ณผํ (CS) > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[c++] ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ ๊ณต๋ถ :: ์๋ฃ๊ตฌ์กฐ - ๊ตฌ์กฐ์ฒด (0) | 2020.07.28 |
---|---|
[c++] ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ ๊ณต๋ถ :: ์๋ฃ๊ตฌ์กฐ - ํ (0) | 2020.07.28 |
[c++] ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ ๊ณต๋ถ :: ์๋ฃ๊ตฌ์กฐ - ๊ทธ๋ํ (0) | 2020.07.28 |
[c++] ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ ๊ณต๋ถ :: ์๋ฃ๊ตฌ์กฐ - ์๋ก (0) | 2020.07.28 |
[c++] ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ ๊ณต๋ถ :: ์๋ฃ๊ตฌ์กฐ - ์คํ, ํ, ๋ฑ (0) | 2020.07.19 |
Comment