๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜-์ด๋ก ]๊ทธ๋ž˜ํ”„์˜ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - DFS(Stack)์™€ BFS(Queue)

by Wonit 2020. 3. 1.
๊ทธ๋ž˜ํ”„ ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ๋…ธ๋“œ์˜ 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 ํ•ด์ค€๋‹ค.

๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜์—ฌ ๋” ์ด์ƒ ํ์— ๋‚จ์€ ๋…ธ๋“œ๊ฐ€ ์—†์„ ๋•Œ ๊นŒ์ง€ ์œ„์™€ ๊ฐ™์€ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๋Œ“๊ธ€