์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[ KB IT's Your Life 7๊ธฐ ]์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํŠน๊ฐ• ํ›„๊ธฐ

yeye 2026. 5. 26. 17:12

 

 

์•ˆ๋…•ํ•˜์„ธ์š”! KB IT's Your Life 7๊ธฐ ๊ธฐ์ž๋‹จ์ž…๋‹ˆ๋‹ค!

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํŠน๊ฐ•์ด ์–ด๋А๋ง ๋๋‚˜๊ฐ€๊ณ  ์žˆ๋Š”๋ฐ์š”!

 

์•„์ง๋„ ๋„ˆ๋ฌด๋„ˆ๋ฌด ์–ด๋ ต๊ณ  ํž˜๋“œ๋„ค์š” ใ… ใ… ...

์˜ค๋Š˜์€ ํŠธ๋ฆฌ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๋ถ€ํ„ฐ DFS, BFS ๊ตฌํ˜„, ๊ทธ๋ฆฌ๊ณ  ์ „์œ„·์ค‘์œ„·ํ›„์œ„ ์ˆœํšŒ๊นŒ์ง€

์ˆ˜์—…์—์„œ ๋ฐฐ์šด ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ดค์œผ๋‹ˆ ๋๊นŒ์ง€ ์ฝ์–ด์ฃผ์„ธ์š”!


ํŠธ๋ฆฌ(Tree)๊ฐ€ ๋ญ”๋ฐ?

ํŠธ๋ฆฌ๋Š” ๊ทธ๋ž˜ํ”„์˜ ํŠน์ˆ˜ํ•œ ํ˜•ํƒœ์˜ˆ์š”.

์ผ๋ฐฉํ–ฅ์ด๊ณ , ๋น„์ˆœํ™˜์ด๊ณ , ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋กœ ๋งบ์–ด์ง€๋Š” ๊ณ„์ธตํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์ฃ 

์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ์ปดํ“จํ„ฐ ํด๋” ๊ตฌ์กฐ๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ๋ผ์š”. C๋“œ๋ผ์ด๋ธŒ ์•ˆ์— ๋ฌธ์„œ ํด๋”๊ฐ€ ์žˆ๊ณ , ๊ทธ ์•ˆ์— ๋˜ ํ•˜์œ„ ํด๋”๊ฐ€

์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์œ„์—์„œ ์•„๋ž˜๋กœ ๋ป—์–ด๋‚˜๊ฐ€๋Š” ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋กœ ํŠธ๋ฆฌ์˜ˆ์š”.

 

์—ฌ๊ธฐ์„œ ๊ผญ ์•Œ์•„์•ผ ํ•  ์šฉ์–ด๋“ค์ด ์žˆ๋Š”๋ฐ์š”!!

 

๋ฃจํŠธ ๋…ธ๋“œ: ํŠธ๋ฆฌ์˜ ๋งจ ๊ผญ๋Œ€๊ธฐ์— ์žˆ๋Š” ๋…ธ๋“œ. ๋ถ€๋ชจ๊ฐ€ ์—†๋Š” ์œ ์ผํ•œ ๋…ธ๋“œ์˜ˆ์š”.

๋ฆฌํ”„ ๋…ธ๋“œ: ์ž์‹์ด ํ•˜๋‚˜๋„ ์—†๋Š” ๋งจ ๋๋‹จ ๋…ธ๋“œ.

์ฐจ์ˆ˜: ํŠน์ • ๋…ธ๋“œ์— ์—ฐ๊ฒฐ๋œ ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜. ํŠธ๋ฆฌ ์ „์ฒด์˜ ์ฐจ์ˆ˜๋Š” ๊ฐ€์žฅ ์ž์‹์ด ๋งŽ์€ ๋…ธ๋“œ์˜ ์ฐจ์ˆ˜๋ฅผ ๋”ฐ๋ผ๊ฐ€์š”.

๋ ˆ๋ฒจ: ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ๋ถ€ํ„ฐ์˜ ๊ฑฐ๋ฆฌ. ๋ฃจํŠธ๊ฐ€ ๋ ˆ๋ฒจ 0์ด๋ฉด ๋ฐ”๋กœ ์•„๋ž˜๊ฐ€ ๋ ˆ๋ฒจ 1, ๊ทธ ์•„๋ž˜๊ฐ€ ๋ ˆ๋ฒจ 2...

์กฐ์ƒ ๋…ธ๋“œ: ํŠน์ • ๋…ธ๋“œ์˜ ๋ถ€๋ชจ, ๋ถ€๋ชจ์˜ ๋ถ€๋ชจ, ์ญ‰ ์˜ฌ๋ผ๊ฐ€๋Š” ๋ชจ๋“  ๋…ธ๋“œ.

์ด ์šฉ์–ด๋“ค์ด ๋‚˜์ค‘์— ๋ฌธ์ œ ํ’€ ๋•Œ ๊ณ„์† ๋‚˜์˜ค๋‹ˆ๊นŒ ์—ฌ๊ธฐ์„œ ํ™•์‹คํžˆ ์žก๊ณ  ๊ฐ€๋Š” ๊ฒŒ ์ข‹์•„์š”!

 

ํŠธ๋ฆฌ์˜ ์ข…๋ฅ˜ — ์ด์ง„ํŠธ๋ฆฌ, ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ, N์ง„ํŠธ๋ฆฌ

 

ํŠธ๋ฆฌ์—๋„ ์ข…๋ฅ˜๊ฐ€ ์žˆ์–ด์š”. ๊ทธ๋ž˜ํ”„์— ์ข…๋ฅ˜๊ฐ€ ์žˆ๋“ฏ์ด!

์ด์ง„ํŠธ๋ฆฌ(Binary Tree): ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ 2๊ฐœ์˜ ์ž์‹๋งŒ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ์˜ˆ์š”.

์™ผ์ชฝ ์ž์‹, ์˜ค๋ฅธ์ชฝ ์ž์‹ ์ด๋ ‡๊ฒŒ ๋ถ€๋ฅด๊ณ , ํ•˜๋‚˜๋งŒ ์žˆ์–ด๋„ ๊ดœ์ฐฎ์•„์š”.

 

์™„์ „ ์ด์ง„ํŠธ๋ฆฌ: ์ด์ง„ํŠธ๋ฆฌ์ธ๋ฐ ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ ๋นผ๊ณ ๋Š” ๋‹ค ๊ฝ‰ ์ฑ„์›Œ์ ธ ์žˆ๊ณ ,

๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ๋„ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ฑ„์›Œ์ง„ ํ˜•ํƒœ์˜ˆ์š”.

N์ง„ํŠธ๋ฆฌ: ์ž์‹ ๋…ธ๋“œ๋ฅผ N๊ฐœ๊นŒ์ง€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ํŠธ๋ฆฌ.

ํŠน๋ณ„ํ•œ ์ œ์•ฝ ์—†์ด ์ž์œ ๋กญ๊ฒŒ ๋ป—์–ด๋‚˜๊ฐ€๋Š” ํ˜•ํƒœ๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ผ์š”.

 

๊ฐ•์‚ฌ๋‹˜์ด "ํŠธ๋ฆฌ์˜ ์ข…๋ฅ˜๋Š” ๊ทธ๋ž˜ํ”„ ์ข…๋ฅ˜๋ณด๋‹ค ๋ฌธ์ œ์—์„œ ์ง์ ‘์ ์ธ ์—ฐ๊ด€์ด ์žˆ๋‹ค"๊ณ  ํ•˜์…จ๋Š”๋ฐ

์‹ค์ œ๋กœ ์ด์ง„ํŠธ๋ฆฌ๋ƒ N์ง„ํŠธ๋ฆฌ๋ƒ์— ๋”ฐ๋ผ ์ฝ”๋“œ ๊ตฌํ˜„ ๋ฐฉ์‹์ด ๋‹ฌ๋ผ์ง€๋”๋ผ๊ณ ์š”.


ํŠธ๋ฆฌ ๊ตฌํ˜„ — ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ, ๊ฐ„์„  ๋ฆฌ์ŠคํŠธ, ํด๋ž˜์Šค

์ถœ์ฒ˜ ์ž…๋ ฅ

ํŠธ๋ฆฌ๋ฅผ ์ฝ”๋“œ๋กœ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•˜๋А๋ƒ? ์ด๊ฒŒ ํ•ต์‹ฌ์ด์—ˆ์–ด์š”.

 

 

์ธ์ ‘ ๋ฆฌ์ŠคํŠธ

๊ทธ๋ž˜ํ”„ ๋•Œ ํ–ˆ๋˜ ๊ทธ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ๋งž์•„์š”! ํŠธ๋ฆฌ๋„ ๊ฒฐ๊ตญ ๊ทธ๋ž˜ํ”„์˜ ์ผ์ข…์ด๋‹ˆ๊นŒ ๋˜‘๊ฐ™์ด ์“ธ ์ˆ˜ ์žˆ์–ด์š”.

์ผ๋ฐฉํ–ฅ ํŠธ๋ฆฌ๋ฉด ๋ถ€๋ชจ์—์„œ ์ž์‹ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ๋„ฃ์œผ๋ฉด ๋˜๊ณ 

์–‘๋ฐฉํ–ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋Š”๋ฐ ๊ทธ๋•Œ๋Š” ๋ฌธ์ œ์—์„œ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๋”ฐ๋กœ ์•Œ๋ ค์ค˜์š”.

 

๊ฐ„์„  ๋ฆฌ์ŠคํŠธ

"0๋ฒˆ์ด๋ž‘ 1๋ฒˆ ์—ฐ๊ฒฐ, 0๋ฒˆ์ด๋ž‘ 2๋ฒˆ ์—ฐ๊ฒฐ, 2๋ฒˆ์ด๋ž‘ 3๋ฒˆ ์—ฐ๊ฒฐ..."

์ด๋Ÿฐ ์‹์œผ๋กœ ์—ฐ๊ฒฐ ์ •๋ณด๋งŒ ์ญ‰ ๋‚˜์—ดํ•œ ํ˜•ํƒœ์ธ๋ฐ DFS๋‚˜ BFS ์“ฐ๋ ค๋ฉด

๊ฒฐ๊ตญ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•ด์„œ ํ•œ ๋‹จ๊ณ„๋ฅผ ๋” ๊ฑฐ์ณ์š”.

 

ํด๋ž˜์Šค ๊ตฌํ˜„ (๋…ธ๋“œ)

์ด๊ฒŒ ์ข€ ์ƒˆ๋กœ์› ์–ด์š”! ์ด์ง„ํŠธ๋ฆฌ๋ฅผ ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ์ด๋Ÿฐ ์‹์ด์—์š”:

class Node {
    int value;
    Node left;
    Node right;

    Node(int value) {
        this.value = value;
    }
}
 

value์— ๊ฐ’์„ ์ €์žฅํ•˜๊ณ , left๋ž‘ right๋กœ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ตฌ์กฐ. ๋ฃจํŠธ ๋…ธ๋“œ ํ•˜๋‚˜๋งŒ ์•Œ๋ฉด ๊ฑฐ๊ธฐ์„œ๋ถ€ํ„ฐ

left, right๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ฉด์„œ ์ „์ฒด ํŠธ๋ฆฌ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์š”.

 

N์ง„ํŠธ๋ฆฌ์ผ ๋•Œ๋Š” left, right ๋Œ€์‹  List<Node> children์œผ๋กœ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๋ฆฌ์ŠคํŠธ์— ๋‹ด์œผ๋ฉด ๋˜๊ณ ์š”.


ํŠธ๋ฆฌ ์ˆœํšŒ — BFS (๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰)

 

์ž ์ด์ œ ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ์œผ๋ฉด ์ˆœํšŒ๋ฅผ ํ•ด์•ผ์ฃ !

๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด๋†จ์œผ๋ฉด ๊บผ๋‚ด์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ์˜๋ฏธ๊ฐ€ ์žˆ์œผ๋‹ˆ๊นŒ์š”

BFS๋Š” ๊ฐ™์€ ๋ ˆ๋ฒจ์— ์žˆ๋Š” ๋…ธ๋“œ๋“ค์„ ๋จผ์ € ๋‹ค ๋ฐฉ๋ฌธํ•˜๊ณ  ๊ทธ๋‹ค์Œ ๋ ˆ๋ฒจ๋กœ ๋„˜์–ด๊ฐ€๋Š” ๋ฐฉ์‹์ด์—์š”.

๊ทธ๋ž˜์„œ ๋ ˆ๋ฒจ ์ˆœ์„œ ์ˆœํšŒ๋ผ๊ณ ๋„ ๋ถˆ๋Ÿฌ์š”.

 

๊ตฌํ˜„๋„ ๊ทธ๋ž˜ํ”„ ๋•Œ ํ–ˆ๋˜ ๊ฑฐ๋ž‘ ๊ฑฐ์˜ ๋˜‘๊ฐ™์•„์š”. ํ(Queue) ์“ฐ๋ฉด ๋!

๊ทผ๋ฐ ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ํฌ์ธํŠธ๊ฐ€ ํ•˜๋‚˜ ์žˆ์—ˆ๋Š”๋ฐ์š”, ์ผ๋ฐฉํ–ฅ ํŠธ๋ฆฌ์—์„œ๋Š” visited ๋ฐฐ์—ด์ด ํ•„์š” ์—†์–ด์š”!

๊ทธ๋ž˜ํ”„์—์„œ๋Š” ์–‘๋ฐฉํ–ฅ์ด๋ผ ๊ฐ”๋˜ ๋ฐ๋ฅผ ๋˜ ๊ฐ€๊ณ  ๋˜ ๊ฐ€๊ณ  ๋ฌดํ•œ ๋ฃจํ”„๊ฐ€ ๋Œ ์ˆ˜ ์žˆ์ž–์•„์š”.

๊ทผ๋ฐ ์ผ๋ฐฉํ–ฅ ํŠธ๋ฆฌ๋Š” ๋ถ€๋ชจ์—์„œ ์ž์‹์œผ๋กœ๋งŒ ๊ฐ€๋‹ˆ๊นŒ ํ•œ๋ฒˆ ๋‚ด๋ ค๊ฐ€๋ฉด ๋‹ค์‹œ ์˜ฌ๋ผ์˜ฌ ์ผ์ด ์—†์–ด์š”.

์ˆœํ™˜๋„ ์—†๊ณ  ์ผ๋ฐฉํ–ฅ์ด๋‹ˆ๊นŒ visited ์ฒดํฌ ์—†์ด๋„ ์•ˆ์ „ํ•˜๊ฒŒ ๋Œ ์ˆ˜ ์žˆ๋Š” ๊ฑฐ์˜ˆ์š”.

๋ฌผ๋ก  ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋ฉด visited๋ฅผ ์จ์•ผ ํ•ฉ๋‹ˆ๋‹ค!


ํŠธ๋ฆฌ ์ˆœํšŒ — DFS (๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰)

 

ํŠธ๋ฆฌ์—์„œ๋Š” ์‚ฌ์‹ค DFS๊ฐ€ ํ›จ์”ฌ ๋งŽ์ด ์“ฐ์—ฌ์š”. ์™œ๋ƒ๋ฉด ํŠธ๋ฆฌ ์ž์ฒด๊ฐ€ ์žฌ๊ท€์ ์ธ ๊ตฌ์กฐ๊ฑฐ๋“ ์š”.

๋ฃจํŠธ ๋…ธ๋“œ ์•„๋ž˜์— ์„œ๋ธŒํŠธ๋ฆฌ๊ฐ€ ์žˆ๊ณ  ๊ทธ ์„œ๋ธŒํŠธ๋ฆฌ๋„ ์ž์„ธํžˆ ๋ณด๋ฉด ๋˜ ๋ฃจํŠธ ๋…ธ๋“œ์™€ ์„œ๋ธŒํŠธ๋ฆฌ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ ...

์ด๊ฒŒ ๋”ฑ ์žฌ๊ท€ ๊ตฌ์กฐ์ž–์•„์š”!

๊ทธ๋ž˜์„œ DFS๋กœ ํŠธ๋ฆฌ๋ฅผ ์ˆœํšŒํ•  ๋•Œ๋Š” ์ด๋Ÿฐ ํ๋ฆ„์ด์—์š”

 

  1. ํ˜„์žฌ ๋…ธ๋“œ ๋ฐฉ๋ฌธ
  2. ์ž์‹ ๋…ธ๋“œ๋“ค์— ๋Œ€ํ•ด DFS ์‹คํ–‰
  3. ๋๊นŒ์ง€ ๊ฐ”๋‹ค๊ฐ€ ๋Œ์•„์˜ค๊ธฐ

 

๊ทผ๋ฐ ์—ฌ๊ธฐ์„œ ํ˜„์žฌ ๋…ธ๋“œ๋ฅผ ์–ธ์ œ ์ฒ˜๋ฆฌํ•˜๋А๋ƒ์— ๋”ฐ๋ผ ์„ธ ๊ฐ€์ง€๋กœ ๋‚˜๋‰˜์–ด์š”. ์ด๊ฒŒ ๋ฐ”๋กœ ์ „์œ„์ˆœํšŒ, ์ค‘์œ„์ˆœํšŒ, ํ›„์œ„์ˆœํšŒ!


์ „์œ„์ˆœํšŒ · ์ค‘์œ„์ˆœํšŒ · ํ›„์œ„์ˆœํšŒ

 

์ „์œ„์ˆœํšŒ (Pre-order)

๋‚˜ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๊ณ  → ์ž์‹ ๋…ธ๋“œ DFS

ํ˜„์žฌ ๋…ธ๋“œ์— ๋„์ฐฉํ•˜์ž๋งˆ์ž ๋ฐ”๋กœ ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ  ๊ทธ๋‹ค์Œ ์ž์‹๋“ค์„ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹์ด์—์š”.

๋””๋ ‰ํ† ๋ฆฌ(ํด๋”) ๊ตฌ์กฐ๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ ์ด๋Ÿฐ ๋ฐฉ์‹์„ ์“ด๋‹ค๊ณ  ํ•ด์š”.

ํด๋”์— ๋“ค์–ด๊ฐ€๋ฉด ์ผ๋‹จ ํด๋” ์ด๋ฆ„์„ ํ™•์ธํ•˜๊ณ  ๊ทธ ์•ˆ์— ์žˆ๋Š” ํ•˜์œ„ ํด๋”๋ฅผ ๋˜ ํƒ์ƒ‰ํ•˜๋Š” ๊ฑฐ์ฃ .

 

์ค‘์œ„์ˆœํšŒ (In-order)

์™ผ์ชฝ ์ž์‹ DFS → ๋‚˜ ์ฒ˜๋ฆฌ → ์˜ค๋ฅธ์ชฝ ์ž์‹ DFS

์ด์ง„ํŠธ๋ฆฌ์—์„œ๋งŒ ์“ฐ์ด๋Š” ์ˆœํšŒ ๋ฐฉ์‹์ด์—์š”. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(BST)๋ฅผ ์ค‘์œ„์ˆœํšŒํ•˜๋ฉด ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋œ ์ˆซ์ž๊ฐ€ ๋‚˜์˜จ๋‹ค๋Š” ํŠน์„ฑ์ด ์žˆ์–ด์š”. ๊ฐ•์‚ฌ๋‹˜์ด ์ด๊ฑด ์ถœ์ œ ๋นˆ๋„๊ฐ€ ๋†’์ง„ ์•Š๋‹ค๊ณ  ํ•˜์…จ์ง€๋งŒ ์•Œ์•„๋‘๋ฉด ์ข‹์€ ๊ฐœ๋…!

ํ›„์œ„์ˆœํšŒ (Post-order)

์ž์‹ ๋…ธ๋“œ DFS ๋‹ค ํ•˜๊ณ  → ๊ทธ ๋‹ค์Œ์— ๋‚˜ ์ฒ˜๋ฆฌ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ๊ฑด ํ›„์œ„์ˆœํšŒ์ž…๋‹ˆ๋‹ค!!

์™œ ๊ทธ๋Ÿฌ๋ƒ๋ฉด ์ž์‹ ๋…ธ๋“œ๋“ค์ด ์•Œ์•„์„œ ์ž๊ธฐ ํ•  ์ผ ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•˜๋ฉด

๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ทจํ•ฉํ•ด์„œ ์ตœ์ข… ๋‹ต์„ ๋งŒ๋“œ๋Š” ๊ตฌ์กฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ด๊ฑฐ๋“ ์š”.

 

์˜ˆ๋ฅผ ๋“ค์–ด ์ด ํŠธ๋ฆฌ์˜ ์ „์ฒด ๋…ธ๋“œ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•ด๋ผ ๊ฐ™์€ ๋ฌธ์ œ. DFS ํ•จ์ˆ˜๊ฐ€ ์ž์‹๋“คํ•œํ…Œ "๋‹ˆ๋„ค ๋ฐ‘์— ๋…ธ๋“œ ๋ช‡ ๊ฐœ์•ผ?"

์‹œํ‚ค๋ฉด, ์ž์‹๋“ค์ด ์•Œ์•„์„œ ์„ธ์„œ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•˜๊ณ  ๋ถ€๋ชจ๋Š” ๊ทธ๊ฑฐ ๋‹ค ๋”ํ•œ ๋‹ค์Œ์— ์ž๊ธฐ ์ž์‹  +1๋งŒ ํ•˜๋ฉด ๋์ด์—์š”.

int dfs(int root, List<List<Integer>> tree) {
    int answer = 1; // ๋‚˜ ์ž์‹  ํฌํ•จ
    for (int child : tree.get(root)) {
        answer += dfs(child, tree);
    }
    return answer;
}
 

์ด ์ฝ”๋“œ ํ•˜๋‚˜๋กœ ์ „์ฒด ๋…ธ๋“œ ๊ฐœ์ˆ˜๊ฐ€ ๋‚˜์™€์š”.

 

๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋…ธ๋“œ ๊ฐ’์˜ ์ดํ•ฉ๋„ ๊ตฌํ•  ์ˆ˜ ์žˆ์–ด์š”. answer = 1 ๋Œ€์‹  answer = values[root]๋กœ ๋ฐ”๊พธ๋ฉด ๋! ์ž์‹๋“ค์ด ๋ฆฌํ„ดํ•œ ํ•ฉ์„ ๋‹ค ๋”ํ•˜๊ณ , ๋‚˜์˜ ๊ฐ’์„ ๋”ํ•˜๋ฉด ์ „์ฒด ์ดํ•ฉ์ด ๋‚˜์˜ค๋Š” ๊ฑฐ์˜ˆ์š”.

**์ตœ๋Œ€ ๊นŠ์ด(Maximum Depth)**๋„ ํ›„์œ„์ˆœํšŒ๋กœ ํ’€ ์ˆ˜ ์žˆ์—ˆ์–ด์š”. ์ž์‹๋“คํ•œํ…Œ "๋‹ˆ๋„ค ์ชฝ ์ตœ๋Œ€ ๊นŠ์ด๊ฐ€ ๋ช‡์ด์•ผ?" ๋ฌผ์–ด๋ณด๊ณ , ๊ทธ์ค‘ ์ œ์ผ ๊นŠ์€ ๊ฑฐ ๊ณจ๋ผ์„œ +1 ํ•˜๋ฉด ๋!


ํ•ต์‹ฌ ํฌ์ธํŠธ๋ฅผ ์ •๋ฆฌํ• ๊ฒŒ์š”

- ๋…ธ๋“œ๊ฐ€ N๊ฐœ๋ฉด ๊ฐ„์„ ์€ N-1๊ฐœ ํŠธ๋ฆฌ์—์„œ๋Š” ๋ฃจํŠธ ๋…ธ๋“œ ๋นผ๊ณ  ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๋ถ€๋ชจ์™€ ์—ฐ๊ฒฐ๋ผ ์žˆ์œผ๋‹ˆ๊นŒ ๊ฐ„์„  ๊ฐœ์ˆ˜๋Š” ํ•ญ์ƒ ๋…ธ๋“œ ์ˆ˜ - 1์ด์—์š”. ๋ฌธ์ œ์—์„œ "๊ฐ„์„ ์ด N-1๊ฐœ" ๋‚˜์˜ค๋ฉด "์•„ ์ด๊ฑฐ ํŠธ๋ฆฌ ๋ฌธ์ œ๊ตฌ๋‚˜!" ๋ฐ”๋กœ ํŒŒ์•… ๊ฐ€๋Šฅ!

- DFS๋ฅผ ๋Œ๋ฆฐ๋‹ค = ํŠธ๋ฆฌ์˜ ์ •๋ณด๋ฅผ ์ทจํ•ฉํ•˜๋Š” ๊ฒƒ DFS ์‹คํ–‰ ์ž์ฒด๊ฐ€ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ์ •๋ณด๋ฅผ ๋ชจ์•„์„œ ์œ„๋กœ ์˜ฌ๋ ค๋ณด๋‚ด๋Š” ๊ณผ์ •์ด์—์š”. ์ž์‹ํ•œํ…Œ ์‹œํ‚ค๊ณ  → ๊ฒฐ๊ณผ ๋ฐ›์•„์„œ → ๋‚ด๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ.

 

- ์žฌ๊ท€์  ์‚ฌ๊ณ ๊ฐ€ ํ•ต์‹ฌ ์ „์ฒด๋ฅผ ํ•œ๋ฒˆ์— ํ’€๋ ค๊ณ  ํ•˜์ง€ ๋ง๊ณ  ๋‚ด๊ฐ€ ํ•  ์ผ์„ ์ •์˜ํ•˜๊ณ 

์ž์‹๋“คํ•œํ…Œ ๋˜‘๊ฐ™์ด ์‹œํ‚ค๋ฉด ํŠธ๋ฆฌ ์ „์ฒด๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค.

์ด๊ฒŒ ํŠธ๋ฆฌ + DFS ๋ฌธ์ œ ํ’€์ด์˜ ๋ณธ์งˆ์ด์—ˆ์–ด์š”.

 

๋งˆ์น˜๋ฉฐ

์•„๋ฌด๋ฆฌ ๋ด๋„ ๋ด๋„ ์–ด๋ ต๊ณ  ์•„์ง ๊ฐˆ ๊ธธ์ด ๋ฉ€์ง€๋งŒ ํ•˜๋‚˜์”ฉ ์Œ“์•„๊ฐ€๋Š” ๋А๋‚Œ์ด ๋“ค์–ด์„œ ์ข‹์Šต๋‹ˆ๋‹ค.

๊ณ„์†ํ•ด์„œ ๋ฐ˜๋ณตํ•˜๋‹ค๋ณด๋ฉด ์ €๋„ ๊ณ ์ˆ˜๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ฒ ์ฃ ...?

์ง€๊ธˆ๊นŒ์ง€ ์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค !! ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ๋ด์š”!