๊ทธ๋ํ ์๋ฃ๊ตฌ์กฐ์์ ๋ ธ๋์ Data๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ด ์๊ฒ ์ง๋ง ๋ํ์ ์ธ DFS, BFS๋ฅผ ํ์ตํด๋ณด์.
๊ทธ๋ํ
๊ทธ๋ํ๋?
์์ ๊ฐ์ ๋ชจ์ต์ผ๋ก ๋ ธ๋๋ค ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ ํน์ ๋น์ฐ๊ฒฐ ๋์ด์๋ ์๋ฃ๊ตฌ์กฐ ์ด๋ค.
์ง๊ธ์ ์๋ฃ๊ตฌ์กฐ์ ๋ํ ์ค๋ช ์ ํ๋ ์๊ฐ์ด ์๋๋ฏ๋ก ๋์ด๊ฐ์ ๋ฐ๋ก ๊ทธ๋ํ์ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์์๋ณด์.
Depth-First-Search(DFS)
๊น์ด ์ฐ์ ๊ฒ์์ธ DFS๋
- Inorder
- Preorder*
- Postorder
๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ํฌํจ๋๋ฉฐ ์์ ๋ ธ๋์์๋ถํฐ ํด๋น ๋ ธ๋์ ์์ ๋ ธ๋๋ก ๋๊น์ง ๋ด๋ ค๊ฐ๋ฉฐ ๊ฒ์ํ๋ ๋ฐฉ์์ ๋ปํ๋ค.
Breath-First-Search(BFS)
๋์ด ์ฐ์ ๊ฒ์์ธ BFS๋
์์ ๋ ธ๋์์ ์์ ์ ํ์ ๋ ธ๋ (Level) ๋จ์๋ก ๊ฒ์ํ๋ ๋ฐฉ๋ฒ์ ๋ปํ๋ค.
DFS์ BFS์ ์ฐจ์ด
DFS์ ๊ตฌํ
๋ค์๊ณผ ๊ฐ์ ๊ทธ๋ํ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์์ ๋ DFS์ BFS๋ฅผ ์ด์ฉํ์ฌ ๊ทธ๋ํ๋ฅผ ์ํํด๋ณด์.
Stack
๊น์ด ์ฐ์ ๊ฒ์ ์ธ DFS๋ ์ฃผ๋ก Stack์ผ๋ก ๊ตฌํ์ ํ๋ค.
์คํ์ ์์ ๋ ธ๋๋ถํฐ ๋ฃ๊ณ ๋ ธ๋๋ฅผ Pop ํ ๋ ํด๋น ๋ ธ๋์ ์์์ ์คํ์ ๋ฃ์ด์ค๋ค.
1. 0์ ์คํ์์ pop ๊ทธ์ ์์์ธ 1์ push ํ๋ค.
2. 1์ ์คํ์์ popํ๊ณ ๊ทธ์ ์์์ธ 2์ 3์ push ํ๋ค.
3. 3์ ์คํ์์ Popํ๊ณ ๊ทธ์ ์์์ธ 4์ 5๋ฅผ push ํ๋ค.
4. 5๋ฅผ ์คํ์์ pop ํ๊ณ ๊ทธ์ ์์์ธ 7๊ณผ 6์ push ํ๋ค.
5. 6์ ์คํ์์ popํ๊ณ ๊ทธ์ ์์์ธ 8์ push ํ๋ค.
6. ๋๋จธ์ง ๋ ธ๋๋ฅผ popํ๋ค.
BFS์ ๊ตฌํ
Queue
๋์ด ์ฐ์ ๊ฒ์์ธ BFS๋ ์ฃผ๋ก Queue๋ก ๊ตฌํ์ ํ๋ค.
0์ ์์๋ ธ๋๋ก ํ์ฌ ๊ทธ์ ์์์ธ 1์ enqueue ํ๋ค.
ํ์์ 1์ dequeue ํ๊ณ ๊ทธ์ ์์์ธ 2์ 3์ enqueue ํ๋ค.
ํ์์ 2๋ฅผ dequeueํ๊ณ ๊ทธ์ ์์์ธ 4๋ฅผ enqueueํ๋ค.
ํ์์ 3์ dequeue ํ๊ณ ๊ทธ์ ์์์ธ 5๋ฅผ enqueue ํ๋ค.
ํ์์ 4๋ฅผ dequeue ํ๊ณ ๊ทธ์ ์์์ enqueue ํด์ผํ์ง๋ง ์ด๋ฏธ ์ถ๋ ฅ๋์ด ์์ผ๋ฏ๋ก ๋์ด๊ฐ๋ค.
ํ์์ 5๋ฅผ dequeue ํ๊ณ ๊ทธ์ ์์์ enqueue ํด์ค๋ค.
๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ๋ ์ด์ ํ์ ๋จ์ ๋ ธ๋๊ฐ ์์ ๋ ๊น์ง ์์ ๊ฐ์ ๊ณผ์ ์ ๋ฐ๋ณตํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
๋๊ธ