D+50
- Graph, Tree, BST -
( Graph, Tree, BST )
Graph
Graph ํน์ง
• ๊ทธ๋ํ๋ ๋ ธ๋์ ๋ ธ๋์ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฐ์ (edge)์ผ๋ก ๊ตฌ์ฑ๋์ด์๋ค.
•๋ฐฉํฅ์ด ์๋ ๋ฌด๋ฐฉํฅ์ด๊ฑฐ๋, ๋ฐฉํฅ์ ๊ฐ์ง๋ ๋ฐฉํฅ์ฑ ๋๋ค ๊ฐ์ง ์ ์๋ค.
๋ฌด๋ฐฉํฅ (Undirected Graph) → ๊ฐ์ ์ ์ํด ์ฐ๊ฒฐ๋ 2๊ฐ์ ๋ ธ๋๊ฐ ๋์นญ์ผ ์ ์๋ค. (ex. A → B, B → A)
๋ฐฉํฅ (Directed Graph) → ๊ฐ์ ์ ์ํด ์ฐ๊ฒฐ๋ 2๊ฐ์ ๋ ธ๋๊ฐ ๋น๋์นญ์ด๋ค. (ex. A → B, B โ A)
์ฐจ์ degree
degree๋ ํด๋น ๋ ธ๋์ ์ฐ๊ฒฐ๋ ์ฃ์ง์ ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
• ์ง์ ์ฐจ์ (in-degree)
์ง์ ์ฐจ์๋ ์ ์ ์ ๊ธฐ์ค์ผ๋ก ๋ค์ด์ค๋ ๊ฐ์ ์ ์๋ก
์ ์ ์ ๋ถ์๋ ๊ฐ์ ์ ๋ฐฉํฅ์ด ๋จธ๋ฆฌ๋ก ํ๋ ๊ฐ์ ์ ์์ด๋ค.
• ์ง์ถ์ฐจ์ (out-degree)
์ง์ ์ฐจ์๋ ์ ์ ์ ๊ธฐ์ค์ผ๋ก ๋๊ฐ๋ ๊ฐ์ ์ ์๋ก
์ ์ ์ ๋ถ์๋ ๊ฐ์ ์ ๋ฐฉํฅ์ด ๊ผฌ๋ฆฌ๋ก ํ๋ ๊ฐ์ ์ ์์ด๋ค.
ex)
A์ ์ง์ ์ฐจ์๋ 2์ด๊ณ , ์ง์ถ์ฐจ์๋ 1์ด๋ค.
B์ ์ง์ ์ฐจ์๋ 1์ด๊ณ , ์ง์ถ์ฐจ์๋ 1์ด๋ค.
C์ ์ง์ ์ฐจ์๋ 1์ด๊ณ , ์ง์ถ์ฐจ์๋ 1์ด๋ค.
์ธ์ ํ๋ ฌ๋ฐฉ์๊ณผ ์ธ์ ๋ฆฌ์คํธ ๋ฐฉ์
• ์ธ์ ํ๋ ฌ๋ฐฉ์
๊ทธ๋ํ๋ฅผ 2์ฐจ์ํ๋ก ํํํ๋ ๊ฒ์ผ๋ก
๋ ธ๋์ ๋ ธ๋์ฌ์ด์ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋ค๋ฉด 1, ๊ทธ๋ ์ง ์์ผ๋ฉด 0์ ๋ฃ์ด ํํํ๊ฒ ๋๋ค.
• ์ธ์ ๋ฆฌ์คํธ๋ฐฉ์
๋ฐฐ์ด๋ฐฉ์ ๋ชจ๋ ๋ ธ๋๋ค์ ์ง์ด๋ฃ๊ณ ๊ฐ ๋ฐฐ์ด๋ฐฉ์ ์๋ ํด๋น๋ ธ๋์ ์ธ์ ํ ๋ ธ๋๋ค์
์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ์ญ ๋์ดํด์ ์ ์ฅํ๋ค.
ex) ๋ ธ๋ 1์ ๋ ธ๋ 2์ 3์ด ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์๋ค.
Tree
Tree ํน์ง
• ๋ ธ๋๋ก ๊ตฌ์ฑ๋ ๊ณ์ธต์ ์ธ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
• ์ต์์ ๋ ธ๋(๋ฃจํธ)๋ฅผ ๋ง๋ค๊ณ , ๋กํธ ๋ ธ๋์ child๋ฅผ ์ถ๊ฐํ๊ณ , ๊ทธ child์ ๊ทธ child์ ๋ child๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก
ํธ๋ฆฌ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ ์ ์๋ค.
Tree ๊ด๋ จ ์ฉ์ด
• node - ํธ๋ฆฌ์ ๊ตฌ์ฑ์์
• root - ํธ๋ฆฌ๊ตฌ์กฐ์์ ์ต์์์ ์กด์ฌํ๋ ๋ ธ๋
• depth - ๋ฃจํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ค๋ฅธ ๋ ธ๋๋ก์ ์ ๊ทผํ๊ธฐ ์ํ ๊ฑฐ๋ฆฌ
• height - ๋กํธ๋ก๋ถํฐ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ง ๋ ธ๋์ ๊น์ด
• sibling - ๊ฐ์ ๋ถ๋ชจ ๊ฐ์ depth์ ์กด์ฌํ๋ ๋ ธ๋
• edge - ๋ ธ๋์ ๋ ธ๋๋ฅผ ์๋ ์
• leaf - ์์์ด ์๋ ๋ ธ๋
BST ( Binary Search Tree )
BST ํน์ง
• ์ต๋ 2๊ฐ์ ์์๋ง์ ๊ฐ์ง๋ ํธ๋ฆฌ์ด๋ค.
• ์ด์ง ํ์ ํธ๋ฆฌ์์๋ ๋ ธ๋์ ๊ฐ์ด ์ ๋ ฌ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์์๊ฐ ์กด์ฌํ๋๋ฐ,
๋ ธ๋์ ์ผ์ชฝ ์๋ธํธ๋ฆฌ์๋ ๋ ธ๋์ ๊ฐ๋ณด๋ค ์์ ๊ฐ์ด ๋ค์ด๊ฐ๊ณ
์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์๋ ๋ ธ๋์ ๊ฐ๋ณด๋ค ๊ฐ๊ฑฐ๋ ํฐ ๊ฐ์ด ์กด์ฌํ๋ค.
๊น์ด ์ฐ์ ํ์ (DFS)
ํน์ ๋ ธ๋์์ ์์ํด ๋ค์ ๋ถ๊ธฐ๋ก ๋์ด๊ฐ์ง ์ ์ ํด๋น๋ถ๊ธฐ๋ฅผ ๋งน๋ชฉ์ ์ผ๋ก ์๋ฒฝํ๊ฒ ํ์ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ด์ง ํ์ ํธ๋ฆฌ ์ํํ๊ธฐ
• ์ ์ ์ํ (preorder traverse)
๋ถ๋ชจ → ์ผ์ชฝ → ์ค๋ฅธ์ชฝ ์์ผ๋ก ๋ฐฉ๋ฌธํ๋ค.
• ์ค์ ์ํ (inorder traverse)
์ผ์ชฝ → ๋ถ๋ชจ → ์ค๋ฅธ์ชฝ ์์ผ๋ก ๋ฐฉ๋ฌธํ๋ค.
• ํ์ ์ํ (postorder traverse)
์ผ์ชฝ → ์ค๋ฅธ์ชฝ → ๋ถ๋ชจ ์์ผ๋ก ๋ฐฉ๋ฌธํ๋ค.
ex)
์ ์์ํ : 0→1→3→7→8→4→9→10→2→5→11→6
์ค์์ํ : 7→3→8→1→9→4→10→0→11→5→2→6
ํ์์ํ : 7→8→3→9→10→4→1→11→5→6→2→0
์ด์ง ํ์ ํธ๋ฆฌ ์ข ๋ฅ
• ์ ์ด์ง ํธ๋ฆฌ (Full Binary Tree)
๋ชจ๋ ๋ ธ๋๊ฐ 0๊ฐ๋ 2๊ฐ์ ์์๋ ธ๋๋ฅผ ๊ฐ์ง๋ ํธ๋ฆฌ
• ์์ ์ด์ง ํธ๋ฆฌ (Complete Binary Tree)
์ผ์ชฝ์์๋ ธ๋๋ถํฐ ์ฑ์์ง๋ฉฐ ๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ๊ณ ๋ชจ๋ ์์ ๋ ธ๋๊ฐ ์ฑ์์ ธ์๋ ํธ๋ฆฌ
• ํฌํ ์ด์ง ํธ๋ฆฌ ( Perfect Binary Tree)
๋ชจ๋ leaf๋ ธ๋๊ฐ ๋๊ฐ์ ๋ ๋ฒจ์ ์๋ ํธ๋ฆฌ
'์๋ > Code-States' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+52] ๊ฐ์ฒด์งํฅ ์ธ์ด (OOP) (0) | 2020.10.28 |
---|---|
[D+51] ์๊ฐ๋ณต์ก๋์ Big-o ํ๊ธฐ๋ฒ (0) | 2020.10.27 |
[D+49] Immersive 1์ฃผ์ฐจ (0) | 2020.10.25 |
[D+48] ๊ฐ์ ํด์... (0) | 2020.10.24 |
[D+47] Linked List์ Hash Table (0) | 2020.10.23 |
๋๊ธ