๐ฏ Tree
Tree๋ ํ๋์ root ๋ ธ๋์์ ์์ํ์ฌ ์ฌ๋ฌ ๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. ๊ฐ ๋ ธ๋๋ ๋ถ๋ชจ-์์ ๊ด๊ณ๋ก ์ด์ด์ ธ ์์ผ๋ฉฐ, ๋ฃจํธ ๋ ธ๋๋ ๋ถ๋ชจ๊ฐ ์๋ ํน์ํ ๋ ธ๋์ ๋๋ค. Tree๋ ๊ณ์ธต์ ์ธ ๊ตฌ์กฐ๋ฅผ ๋ํ๋ด๋ ๋ฐ์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค.
Tree์ ์ฉ์ด
- ๋ฃจํธ๋ ธ๋ : ํธ๋ฆฌ์ ์ต์์์ ์๋ ๋ ธ๋ [A]
- ์์๋
ธ๋ : ๋
ธ๋ ํ์์ ์ฐ๊ฒฐ๋ ๋
ธ๋
[B,C,D]๋ [A]์ ์์๋ ธ๋ - ๋ถ๋ชจ๋
ธ๋ : ๋
ธ๋์ ์์์ ์ฐ๊ฒฐ๋ ๋
ธ๋
[A]๋ [B,C,D]์ ๋ถ๋ชจ๋ ธ๋ - ์ฐจ์(Degree) : ์์๋
ธ๋์ ์
[A]์ Degree๋ 3 - ์ดํ๋ฆฌ๋
ธ๋(Leaf) : ์์์ด ์๋ ๋
ธ๋(= ๋จ๋ง๋
ธ๋ : Terminal Node)
[K,L,F,M,N,I,O,P] - ํ์ ๋
ธ๋ : ๋์ผํ ๋ถ๋ชจ๋ฅผ ๊ฐ์ง๋ ๋
ธ๋
[B,C,D]๋ ๋ถ๋ชจ๊ฐ [A]์ธ ํ์ ๋ ธ๋ - ์กฐ์๋
ธ๋ : ๋ฃจํธ๋
ธ๋๊น์ง์ ๊ฒฝ๋ก์์ ์๋ ๋ชจ๋
๋ ธ๋๋ค์ ์งํฉ
[P]์ ์กฐ์๋ ธ๋๋ [J,D,A] - ํ์๋
ธ๋ : ๋
ธ๋ ์๋๋ก ๋งค๋ฌ๋ฆฐ ๋ชจ๋ ๋
ธ๋๋ค์ ์งํฉ
[H,I,N]์ [C]์ ์์ - ์๋ธํธ๋ฆฌ : ๋
ธ๋ ์์ ๊ณผ ํ์๋
ธ๋๋ก ๊ตฌ์ฑ๋ ํธ๋ฆฌ
[C]๋ฅผ ๋ฃจํธ๋ ธ๋๋ก ํ๋ ์๋ธํธ๋ฆฌ๋ [C]์ [C]์
์์๋ ธ๋๋ค๋ก ๊ตฌ์ฑ๋ ํธ๋ฆฌ - ๋ ๋ฒจ : ๋ฃจํธ๋
ธ๋(๋ ๋ฒจ1)๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋๋ก ํ ์ธต์ฉ
๋ ๋ฒจ์ด 1์ฉ ์ฆ๊ฐ - ๋์ด : ํธ๋ฆฌ์ ์ต๋ ๋ ๋ฒจ ๋์ด 4
- ํค : ํ์์ ์ฌ์ฉ๋๋ ๋ ธ๋์ ์ ์ฅ๋ ์ ๋ณด
Tree์ ์ํ
ํธ๋ฆฌ์ ์ํ(Traversal)๋, Tree์ ๋ชจ๋ ๋ ธ๋๋ฅผ ํ ๋ฒ์ฉ ๋ฐฉ๋ฌธํ๋ ๊ฒ์ ๋งํฉ๋๋ค. Tree๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋ฉ๋๋ค: ๊น์ด ์ฐ์ ์ํ(DFS: Depth-First Search)์ ๋๋น ์ฐ์ ์ํ(BFS: Breadth-First Search)์ ๋๋ค.
- ๊น์ด ์ฐ์ ์ํ (DFS)
- ๊น์ด ์ฐ์ ์ํ๋, Tree์ ์ต๋ ๊น์ด๊น์ง ๋ด๋ ค๊ฐ์ ๋ ธ๋๋ฅผ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊น์ด ์ฐ์ ์ํ๋ ๋ค์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋๋ฉ๋๋ค: ์ ์ ์ํ(Preorder Traversal), ์ค์ ์ํ(Inorder Traversal), ํ์ ์ํ(Postorder Traversal)์ ๋๋ค.
- ๋๋น ์ฐ์ ์ํ (BFS)
- ๋๋น ์ฐ์ ์ํ๋, ๋ ๋ฒจ ์์๋๋ก Tree๋ฅผ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ต์์ ๋ ๋ฒจ๋ถํฐ ํ ๋ ๋ฒจ์ฉ ๋ด๋ ค๊ฐ๋ฉด์ ํ์ํ๋ฉฐ, ๊ฐ์ ๋ ๋ฒจ์ ๋ ธ๋๋ค์ ์ข์์ ์ฐ๋ก ์์๋๋ก ๋ฐฉ๋ฌธํฉ๋๋ค.
- ์ ์ ์ํ (Preorder Traversal)
์ ์ ์ํ๋, ํ์ฌ ๋ ธ๋๋ฅผ ๊ฐ์ฅ ๋จผ์ ํ์ํ๊ณ , ๊ทธ ๋ค์์ ์ผ์ชฝ ์์ ๋ ธ๋๋ฅผ ํ์ํ๊ณ , ๋ง์ง๋ง์ผ๋ก ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๋ฅผ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
- ์ค์ ์ํ (Inorder Traversal)
์ค์ ์ํ๋, ํ์ฌ ๋ ธ๋์ ์ผ์ชฝ ์์ ๋ ธ๋๋ฅผ ํ์ํ ๋ค์, ํ์ฌ ๋ ธ๋๋ฅผ ํ์ํ๊ณ , ๋ง์ง๋ง์ผ๋ก ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๋ฅผ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ค์ ์ํ๋ ์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree)์์ ์ ๋ ฌ๋ ์ํ๋ก ์ถ๋ ฅํ๋ ๋ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
- ํ์ ์ํ (Postorder Traversal)
ํ์ ์ํ๋, ํ์ฌ ๋ ธ๋์ ์์ ๋ ธ๋๋ค์ ๋จผ์ ํ์ํ ๋ค์, ๋ง์ง๋ง์ผ๋ก ํ์ฌ ๋ ธ๋๋ฅผ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ํ์ ์ํ๋ Leaf ๋ ธ๋๋ฅผ ๋จผ์ ๋ฐฉ๋ฌธํ๋ ๋ฑ์ ๋ฐฉ๋ฒ์ผ๋ก ํ์ฉ๋ ์ ์์ต๋๋ค.
Tree์ ํ์ฉ
- ๊ณ์ธต์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋
- ํ์ผ ์์คํ , ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ ๋ฑ๊ณผ ๊ฐ์ด ๊ณ์ธต์ ์ธ ๋ฐ์ดํฐ๋ฅผ ํํํ๋๋ฐ ํธ๋ฆฌ ๊ตฌ์กฐ๊ฐ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
- ๊ฒ์๊ณผ ์ ๋ ฌ
- ์ด์ง ํ์ ํธ๋ฆฌ๋ ๊ฒ์๊ณผ ์ ๋ ฌ์ ์ํด ๋งค์ฐ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
- ์ธ๊ณต์ง๋ฅ
- ์์ฌ๊ฒฐ์ ๋๋ฌด(decision tree)๋ ์ธ๊ณต์ง๋ฅ ๋ถ์ผ์์ ๋ง์ด ์ฌ์ฉ๋๋ฉฐ, ๋ฐ์ดํฐ ๋ง์ด๋, ํจํด ์ธ์ ๋ฑ์ ํ์ฉ๋ฉ๋๋ค.
- ๋คํธ์ํฌ
- ๋ผ์ฐํ ํ ์ด๋ธ, ์ธํฐ๋ท ํ๋กํ ์ฝ(IP) ๋ฑ์์ ํธ๋ฆฌ ๊ตฌ์กฐ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ๊ทธ๋ํฝ์ค
- ๊ฒ์, ์ ๋๋ฉ์ด์ ๋ฑ์์ ์บ๋ฆญํฐ๋ ๊ฐ์ฒด์ ์์น๋ฅผ ๊ณ์ธต์ ์ผ๋ก ํํํ๊ธฐ ์ํด ํธ๋ฆฌ ๊ตฌ์กฐ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ปดํ์ผ๋ฌ
- ์ปดํ์ผ๋ฌ๋ ์์ค ์ฝ๋๋ฅผ ๋ถ์ํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํธ๋ฆฌ ํํ์ ์ถ์ ๊ตฌ๋ฌธ ํธ๋ฆฌ(Abstract Syntax Tree, AST)๋ก ๋ํ๋ด๊ธฐ๋ ํฉ๋๋ค.
'์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] Hash (0) | 2023.03.27 |
---|---|
[์๋ฃ๊ตฌ์กฐ] Heap (0) | 2023.03.27 |
[์๋ฃ๊ตฌ์กฐ] LinkedList (0) | 2023.03.26 |
[์๋ฃ๊ตฌ์กฐ] Trie (0) | 2023.03.26 |
[์๋ฃ๊ตฌ์กฐ] Stack & Queue (0) | 2023.03.26 |