โ๏ธ ์์
ํธ๋ฆฌ(Tree), ๊ทธ๋ํ(Graph)์ ๋ํ ์ด๋ก ์ ํ์ตํ๊ณ ์๊ณ ๋ฆฌ์ฆ์ ํ์ด ๋ณด์๋ค.
๐ ๋ฐฐ์ด ๊ฒ
โ๏ธ ํธ๋ฆฌ(Tree)
- ์ด๋ฆ ๊ทธ๋๋ก ๋๋ฌด์ ํํ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. (์ ํํ๋ ๋๋ฌด๋ฅผ ๊ฑฐ๊พธ๋ก ๋ค์ง์ด ๋์ ๋ฏํ ๋ชจ์ต)
- ์ฌ๋ฌ ๊ตฌ์กฐ ๋จ๋ฐฉํฅ ๊ทธ๋ํ์ ํ ๊ตฌ์กฐ๋ก, ํ๋์ ๋ฟ๋ฆฌ๋ก ๋ถํฐ ๊ฐ์ง๊ฐ ์ฌ๋ฐฉ์ผ๋ก ๋ป์ ํํ

์ด์งํธ๋ฆฌ(Binary tree)
- ์์ ๋
ธ๋๊ฐ ์ต๋ ๋ ๊ฐ์ธ ๋
ธ๋๋ก ๊ตฌ์ฑ๋ ํธ๋ฆฌ
- ๋ ๊ฐ์ ์์ ๋
ธ๋๋ ์ผ์ชฝ ์์ ๋
ธ๋์ ์ค๋ฅธ์ชฝ ์์ ๋
ธ๋๋ก ๋๋ ์ ์๋ค.
- ์๋ฃ์ ์ฝ์
, ์ญ์ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ๋๋๋ค.
- ์ด์งํธ๋ฆฌ(Full binary tree), ์์ ์ด์งํธ๋ฆฌ(Complete binary tree), ํฌํ ์ด์งํธ๋ฆฌ(Perfect binary tree)
์์ฃผ ๋๊ป ๊ฒ์ (์
์ค ๋ค์ด) ์ฒ๋ผ ๊ธฐ์ค ๊ฐ์ ์ ํด์ ๋น ๋ฅด๊ฒ ์ฐพ๋๋ค.
์ด์งํธ๋ฆฌ ํน์ง
- ์ ์ด์งํธ๋ฆฌ : ๊ฐ ๋
ธ๋๊ฐ 0๊ฐ ํน์ 2๊ฐ์ ์์ ๋
ธ๋๋ฅผ ๊ฐ๋๋ค.
- ํฌํ ์ด์งํธ๋ฆฌ : ์ ์ด์งํธ๋ฆฌ์ด๋ฉด์ ์์ ์ด์งํธ๋ฆฌ์ธ ๊ฒฝ์ฐ
- ๋ชจ๋ ๋ฆฌํ ๋
ธ๋์ ๋ ๋ฒจ์ด ๋์ผํ๊ณ , ๋ชจ๋ ๋ ๋ฒจ์ด ๊ฐ๋ ์ฑ์์ ธ ์๋ ํธ๋ฆฌ
- ์์ ์ด์งํธ๋ฆฌ : ๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ ๋ชจ๋ ๋
ธ๋๊ฐ ๊ฐ๋ ์ฐจ ์์ด์ผ ํ๊ณ , ๋ง์ง๋ง ๋ ๋ฒจ์ ๋
ธ๋๋ ์ ๋ถ ์ฐจ ์์ง ์์๋ ๋์ง๋ง ์ธ์ชฝ์ด ์ฑ์์ ธ ์์ด์ผํ๋ค.
- ์ด๋ฌํ ์ด์งํธ๋ฆฌ๋ ์ด์ง ํ์ ํธ๋ฆฌ์ ์ด์ง ํ ๊ตฌํ์ ์ฌ์ฉ ๋๊ณ
- ํจ์จ ์ ์ธ ๊ฒ์๊ณผ ์ ๋ ฌ์ ์ํด ์ฌ์ฉ ๋๋ค.
โ๏ธ ์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree)
์ด์ง ํ์?
- ์ ๋ ฌ๋ ๋ฐ์ดํฐ ์ค์์ ํน์ ํ ๊ฐ์ ์ฐพ๊ธฐ ์ํ ํ์ ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋
- ๋
ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ์ด ์๊ฑฐ๋ ๊ฐ๊ณ , ์ค๋ฅธ์ชฝ์ ํฐ ๊ฐ์ด ์์นํ๋ ํธ๋ฆฌ๋ก ์ ๋ถ ์ ๋ ฌ ๋์ด์๋ค.
โ๏ธ ์ด์ง ํ์ ํธ๋ฆฌ์ ์ด์ง ํธ๋ฆฌ๋ ๋ค๋ฅธ ๊ฐ๋
์ด๋ค.
์ฐจ์ด์ ์ด ์๋ค๋ฉด ์ด์ง ํ์ ํธ๋ฆฌ๋ ์ ๋ ฌ ๋์ด์๊ณ ์ด์ง ํธ๋ฆฌ๋ ์ ๋ ฌ๋์ด์์ง ์๋ค.
์ด์ง ํ์ ํธ๋ฆฌ ํน์ง
- ๊ฐ ๋
ธ๋์ ์ค๋ณต๋์ง ์๋ ํค(key)๊ฐ ์๋ค.
- ๋ฃจํธ๋
ธ๋์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ : ํด๋น ๋
ธ๋์ ํค๋ณด๋ค ์์ ํค๋ฅผ ๊ฐ๋ ๋
ธ๋๋ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- ๋ฃจํธ๋
ธ๋์ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ : ํด๋น ๋
ธ๋์ ํค๋ณด๋ค ํฐ ํค๋ฅผ ๊ฐ๋ ๋
ธ๋๋ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- ์ข์ฐ ์๋ธ ํธ๋ฆฌ๋ ๋ชจ๋ ์ด์ง ํ์ ํธ๋ฆฌ์ฌ์ผ ํ๋ค.
๋ชจ๋ ์ผ์ชฝ ์์์ ๊ฐ์ด ๋ฃจํธ๋ ๋ถ๋ชจ๋ณด๋ค ์๊ณ , ๋ชจ๋ ์ค๋ฅธ์ชฝ ์์์ ๊ฐ์ด ๋ฃจํธ๋ ๋ถ๋ชจ๋ณด๋ค ํฐ ๊ฐ์ ๊ฐ์ง๋ ํน์ง์ด ์๋ค.
๊ธฐ์กด ์ด์ง ํธ๋ฆฌ๋ณด๋ค ํ์์ด ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์๋ค.
ํธ๋ฆฌ์ ๋์ด๊ฐ h(height)๋ผ๋ฉด o(h)์ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
ํธ๋ฆฌ ์์ ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ด ์๋๋ผ๋ ์ต๋ h๋ฒ(ํธ๋ฆฌ์ ๋์ด) ๋งํผ ์ฐ์ฐ๊ณผ ํ์์ด ์งํ๋๋ค.
1. ๋ฃจํธ ๋
ธ๋์ ํค์ ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ ๋น๊ต ํ๋ค.
- ๋ง์ฝ ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ด๋ผ๋ฉด ํ์์ ์ข
๋ฃ
2. ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ด ๋ฃจํธ ๋
ธ๋์ ํค๋ณด๋ค ์๋ค๋ฉด ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ๋ก ํ์์ ์งํ
3. ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ด ๋ฃจํธ ๋
ธ๋์ ํค๋ณด๋ค ํฌ๋ค๋ฉด ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ๋ก ํ์์ ์งํ
์ ์ ์ํ(preorder traverse)
- ๊ฐ์ฅ ๋จผ์ ๋ฐฉ๋ฌธํ๋ ๋
ธ๋๋ ๋ฃจํธ์ด๋ค.
- ๋ฃจํธ์์ ์์ํด ์ผ์ชฝ์ ๋
ธ๋๋ค์ ์์ฐจ์ ์ผ๋ก ๋๋ฌ๋ณธ ๋ค
- ์ผ์ชฝ์ ๋
ธ๋ ํ์์ด ๋๋๋ฉด ์ค๋ฅธ์ชฝ ๋
ธ๋๋ฅผ ํ์ํ๋ค.
๋ถ๋ชจ ๋
ธ๋๊ฐ ์ ์ผ ๋จผ์ ๋ฐฉ๋ฌธ๋๋ ์ํ ๋ฐฉ์
(ํธ๋ฆฌ๋ฅผ ๋ณต์ฌํ ๋ ์ฌ์ฉ)

์ ์ ์ํํ ๊ฒฝ์ฐ
1 - 6 - 4 - 7 - 9 - 8 - 10 - 5 - 2 - 3 - 11
์ค์ ์ํ(inorder traverse)
- ๋ฃจํธ๋ฅผ ๊ฐ์ด๋ฐ์ ๋๊ณ ์ํํ๋ค.
- ์ ์ผ ์ผ์ชฝ ๋์ ์๋ ๋
ธ๋ ๋ถํฐ ์ํํ๊ธฐ ์์ํด
- ๋ฃจํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ธ์ชฝ์ ์๋ ๋
ธ๋์ ์ํ๊ฐ ๋๋๋ฉด ๋ฃจํธ๋ฅผ ๊ฑฐ์ณ
- ์ค๋ฅธ์ชฝ์ ์๋ ๋
ธ๋๋ก ์ด๋ํด ๋ง์ ํ์ํ๋ค.
๋ถ๋ชจ ๋
ธ๋๊ฐ ์๋ธ ํธ๋ฆฌ์ ๋ฐฉ๋ฌธ ์ค๊ฐ์ ๋ฐฉ๋ฌธ๋๋ ์ํ ๋ฐฉ์
(์ด์ง ํ์ ํธ๋ฆฌ์ ์ค๋ฆ์ฐจ์์ผ๋ก ๊ฐ์ ๊ฐ์ ธ์ฌ ๋ ์ฌ์ฉ)

์ค์ ์ํํ ๊ฒฝ์ฐ
7 - 4 - 8 - 9 - 10 - 6 - 5 - 1 - 3 - 2 11
ํ์ ์ํ(postorder traverse)
- ๋ฃจํธ๋ฅผ ๊ฐ์ฅ ๋ง์ง๋ง ๋ถํฐ ์ํํ๋ค.
- ์ ์ธ ์ผ์ชฝ ๋์ ์๋ ๋
ธ๋๋ถํฐ ์ํํ๊ธฐ ์์ํด
- ๋ฃจํธ๋ฅผ ๊ฑฐ์น์ง ์๊ณ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํด ์ํํ ๋ค,
- ์ ์ผ ๋ง์ง๋ง์ ๋ฃจํธ๋ฅผ ๋ฐฉ๋ฌธํ๋ค.
ํธ๋ฆฌ๋ฅผ ์ญ์ ํ ๋ ์ฌ์ฉํ๋ค.
(์์ ๋
ธ๋๊ฐ ๋จผ์ ์ญ์ ๋์ด์ผ ์์ ๋
ธ๋๋ฅผ ์ญ์ ํ ์ ์๊ธฐ ๋๋ฌธ)

์ค์ ์ํํ ๊ฒฝ์ฐ
7 - 8 - 10 - 9 - 4 - 5 - 6 - 3 - 11 - 2 - 1
๋ ๋ฒจ ์ํ (levelorder traverse)
- ํธ๋ฆฌ์ ๋ ๋ฒจ ๊ธฐ์ค์ผ๋ก ๋
ธ๋๋ค์ ๋ฐฉ๋ฌธ ์ํ ํ๋ค.
- ๋ฃจํธ ๋
ธ๋๋ฅผ ์์์ผ๋ก ์๋๋ก ๋ป์ด๋๊ฐ ๋
ธ๋๋ค์ ๋ฐฉ๋ฌธํ๋ฉฐ ๋ฃจํธ ๋
ธ๋์ ๋ ๋ฒจ์ด 1์ด๋ผ๊ณ ํ์ ๋
- ์๋๋ก ๋ด๋ ค๊ฐ ์๋ก ๋ ๋ฒจ์ ์ฆ๊ฐํ๋ ํน์ง์ ๋ณผ ์ ์๋ค.
- ๋์ผํ ๋ ๋ฒจ์ ์ฌ๋ฌ ๋
ธ๋๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ ์์๋ก ๋
ธ๋๋ฅผ ์ํํ๋ค.

๋ ๋ฒจ ์ํํ ๊ฒฝ์ฐ
1 - 6 - 2 - 4 - 5 - 3 - 11 - 7 - 9 - 8 - 10
์ํ ๋ฐฉ์์ ๋๋๋ ์ด์ ?
๋ชจ๋ ๋
ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๊ธฐ ์ํด์๋ ์ผ์ ํ ์กฐ๊ฑด์ด ํ์ํ๊ณ ,
ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ ์ง๋ณด์ํ๊ฑฐ๋ ํน์ ๋ชฉ์ ์ ์ํด์๋ ์ํ ๋ฐฉ๋ฒ์ ๋ํ ์ ์๋ ํ์์ ์ผ๋ก ํ์ํ๊ธฐ ๋๋ฌธ
โ๏ธ ๊ทธ๋ํ(Graph)
- ์ฌ๋ฌ ๊ฐ์ ์ ์ด ์๋ก ๋ณต์กํ๊ฒ ์ฐ๊ฒฐ๋ ๊ด๊ณ๋ฅผ ํํํ ์๋ฃ๊ตฌ์กฐ
- ๊ฑฐ๋ฏธ์ค ์ฒ๋ผ ์ฌ๋ฌ ๊ฐ์ ์ ์ด ์ ์ผ๋ก ์ด์ด์ ธ ์๋ ๋ณต์กํ ๋คํธ์ํฌ๋ง๊ณผ ๊ฐ์ ๋ชจ์ต

๊ทธ๋ํ์ ๊ตฌ์กฐ
- ์ง์ ์ ์ธ ๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ ์ ์ฌ์ด๋ฅผ ์ด์ด์ฃผ๋ ์ ์ด ์๋ค.
- ๊ฐ์ ์ ์ธ ๊ด๊ณ์ธ ๊ฒฝ์ฐ ๋ช ๊ฐ์ ์ ๊ณผ ์ ์ ๊ฑธ์ณ ์ด์ด์ง๋ค.
- ์ ์ (vertex, node) : ํ๋์ ์ ์ ๊ทธ๋ํ์์ ์ ์ ์ด๋ผ ํ๋ค.
- ๊ฐ์ (edge) : ์ ์ ์ ์ด์ด๋๋ ๊ฐ ํ๋์ ์ ์ ๊ฐ์ ์ด๋ผ ํ๋ค.
ํํ ๋ฐฉ์
์ธ์ ํ๋ ฌ


1์ด ๊ฐ์ ์ ์๋ฏธ ํ๋ค.
- ๋ง์ฝ A๋ผ๋ ์ ์ ๊ณผ B๋ผ๋ ์ ์ ์ด ์๋ค๋ฉด
1(true)
, ์ด์ด์ ธ ์์ง ์๋ค๋ฉด 0(false)
๋ก ํ์ํ ์ผ์ข
์ ํ
- ๋ง์ฝ ๊ฐ์ค์น ๊ทธ๋ํ์ธ ๊ฒฝ์ฐ 1 ๋์ ๊ด๊ณ์์ ์๋ฏธ ์๋ ๊ฐ์ ์ ์ฅํ๋ค.
- ๋ ์ ์ ์ ์ด์ด์ฃผ๋ ๊ฐ์ ์ด ์๋ค๋ฉด ๋ ์ ์ ์ ์ธ์ ํ๋ค๊ณ ํ๋ค.
- ์๋ก ๋ค๋ฅธ ์ ์ ๋ค์ด ์ธ์ ํ ์ํ์ธ์ง๋ฅผ ํ์ํ ํ๋ ฌ๋ก 2์ฐจ์ ๋ฐฐ์ด์ ํํ๋ก ๋ํ๋ธ๋ค.
[0][1]
์ธ์ ๋ฆฌ์คํธ


- ๊ฐ ์ ์ ์ด ์ด๋ค ์ ์ ๊ณผ ์ธ์ ํ๋์ง๋ฅผ ๋ฆฌ์คํธ ํํ๋ก ํํ
- ๊ฐ ์ ์ ๋ง๋ค ํ๋์ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ด ๋ฆฌ์คํธ๋ ์์ ๊ณผ ์ธ์ ํ ๋ค๋ฅธ ์ ์ ์ ๋ด๊ณ ์๋ค.
์ธ์ ํ๋ ฌ, ์ธ์ ๋ฆฌ์คํธ๋ ์ธ์ ์ฌ์ฉ?
์ธ์ ํ๋ ฌ
- ๋ ์ ์ ์ฌ์ด์ ๊ด๊ณ๊ฐ ์๋์ง, ์๋์ง ํ์ธํ๊ธฐ์ ์ฉ์ด
- ๊ฐ์ฅ ๋น ๋ฅธ ๊ฒฝ๋ก(shortest path)๋ฅผ ์ฐพ๊ณ ์ ํ ๋ ์ฃผ๋ก ์ฌ์ฉ
์ธ์ ๋ฆฌ์คํธ
- ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์ถ์ ๋
BFS(Breadth-First Search)
- ๋๋น ์ฐ์ ํ์
- ๋
ธ๋์ ์ธ์ ํ ์ด์๋ค์ ๋จผ์ ๋ฐฉ๋ฌธํ๊ณ ์ด์์ ์ด์ ๋
ธ๋๋ฅผ ๋ฐฉ๋ฌธ
์ต๋จ ๊ฒฝ๋ก ์ฐพ์ ๋ ์ฌ์ฉ
BFS๋ ํ์ฌ ์๋ ๋
ธ๋์์ ๊ฐ๊น์ด ๊ณณ๋ถํฐ ํ์ํ๋ฏ๋ก ๊ฒฝ๋ก๋ฅผ ํ์ํ๋ ๋์ค ๊ฐ์ฅ ๋จผ์ ๋ฐ๊ฒฌํ ํด๋ต์ด ์ต๋จ๊ฑฐ๋ฆฌ๋ผ๋ ๋ณด์ฅ์ด ๋๊ธฐ ๋๋ฌธ
DFS(Depth-First Search)
- ๊น์ด ์ฐ์ ํ์(์ฃผ๋ก ์คํ์ ์ฌ์ฉํ๋ค.)
- ๊ฐ ์ ์๋ ํ ๊น๊ฒ ๋ค์ด ๊ฐ ํ ๋ ์ด์ ๊ฐ ์ ์์ ๋ ์ด์ ์ผ๋ก ๋์๊ฐ๋ค.
- ํ๋์ ๊ฒฝ๋ก๋ฅผ ๋๊น์ง ํ์ํ ํ, ์ํ๋ ๊ฐ์ด ์๋๋ฉด ๋ค์ ๊ฒฝ๋ก๋ก ๋์ด๊ฐ ํ์ํ๋ค.
โ๏ธ ๋ง์น๋ฉฐ
ํธ๋ฆฌ(Tree), ๊ทธ๋ํ(Graph)์ ๋ํ ์ด๋ก ์ ๋ํด ํ์ตํ๋ค.
์๋ฃ๊ตฌ์กฐ, ์๊ณ ๋ฆฌ์ฆ์ ํด๋น ๊ณผ ํ์์ด ํ ํ๊ธฐ ๋์ ๋ฐฐ์ฐ๋ ๋ด์ฉ์ด๋ผ๊ณ ํ ์ ์๋ค.
๊ทธ๊ฑธ ์ดํ ๋ง์ ๋ฐฐ์ธ๋ ค๊ณ ํ๋ ์ด๋ ค์ด๊ฑด ์ฌ์ค์ด๋ค.
๊ทธ๋๋ ์ด๋ค์์ผ๋ก ๋์ํ๋์ง๋ง ์์๋ ๊ด์ฐฎ์ง ์์๊น ์ถ์ด์
๋ํ์ ๊ทธ๋ ค ๊ฐ์ด ์ฒจ๋ถํด ๋์๋ค.
๊ด๋ จ ์๊ณ ๋ฆฌ์ฆ... ์์งํ ๋๋ฌด ์ด๋ ค์ ๋ค.
๋ถ๋ช
๋์ค์ ๊ฐ๋ฉด ํ์ํ๊ฒ ์ง๋ง...
์ง๊ธ์ ๋ ํผ๋ฐ์ค ์ฝ๋ ์ฐธ๊ณ ํ๋ฉด์
์ด๋ฐ์์ผ๋ก ์งํํ๋ ๊ตฌ๋.. ์ ๋๋ก ์ตํ ๋๋ ค๊ณ ํ๋ค.