๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋นˆ ๊ตฌ๋ฉ ์ฑ„์šฐ๊ธฐ

[์ž๋ฃŒ ๊ตฌ์กฐ] ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ Red-Black Tree

์ถœ์ฒ˜

ChatGPT

CS USFCA Visualization : ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ ๊ทธ๋ฆผ ์˜ˆ์‹œ


๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ(Red-Black Tree)๋Š” ์ž๊ฐ€ ๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(Self-Balancing Binary Search Tree)๋กœ, ๋…ธ๋“œ๋“ค์ด ๋ ˆ๋“œ์™€ ๋ธ”๋ž™์œผ๋กœ ์ƒ‰์น ๋˜์–ด ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์„ ์œ ์ง€ํ•œ๋‹ค. ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ๋Š” ์‚ฝ์ž…, ์‚ญ์ œ์™€ ๊ฐ™์€ ์—ฐ์‚ฐ ํ›„์—๋„ ํŠธ๋ฆฌ๊ฐ€ ํ•œ์ชฝ์œผ๋กœ ์น˜์šฐ์น˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„๋˜์–ด, ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•œ๋‹ค.

๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ๋Š” ์ž๊ฐ€ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํƒ์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ ์—ฐ์‚ฐ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ O(log n)์œผ๋กœ ์œ ์ง€๋œ๋‹ค.

 

๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ์˜ ๊ทœ์น™

๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ๋Š” ํŠน์ •ํ•œ ๊ทœ์น™์„ ๋”ฐ๋ผ์•ผ๋งŒ ๊ท ํ˜•์„ ์œ ์ง€ํ•œ๋‹ค. ์ด ๊ทœ์น™๋“ค์„ ํ†ตํ•ด ํŠธ๋ฆฌ์˜ ๋†’์ด๊ฐ€ ์ œํ•œ๋˜๊ณ , ์—ฐ์‚ฐ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ๊ฐ ๋…ธ๋“œ๋Š” ๋ ˆ๋“œ ๋˜๋Š” ๋ธ”๋ž™์ด๋‹ค
  2. ๋ฃจํŠธ ๋…ธ๋“œ๋Š” ๋ธ”๋ž™์ด๋‹ค.
  3. ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ๋Š” ๋ธ”๋ž™์ด๋‹ค.
    • ๋ฆฌํ”„ ๋…ธ๋“œ, ์ฆ‰ ํŠธ๋ฆฌ ๋์— ์žˆ๋Š” ๋…ธ๋“œ(์ผ๋ฐ˜์ ์œผ๋กœ null๋กœ ํ‘œํ˜„๋œ)๋Š” ๋ธ”๋ž™์ด๋‹ค.
  4. ๋ ˆ๋“œ ๋…ธ๋“œ์˜ ์ž์‹ ๋…ธ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ ๋ธ”๋ž™์ด์–ด์•ผ ํ•œ๋‹ค.
    • ๋ ˆ๋“œ ๋…ธ๋“œ๋Š” ์—ฐ์†์ ์œผ๋กœ ์˜ฌ ์ˆ˜ ์—†๋‹ค.
  5. ๋ชจ๋“  ๊ฒฝ๋กœ์—์„œ ๋ฆฌํ”„ ๋…ธ๋“œ(NIL)๊นŒ์ง€์˜ ๋ธ”๋ž™ ๋…ธ๋“œ ์ˆ˜๋Š” ๋™์ผํ•˜๋‹ค.
    • ๋ชจ๋“  ๊ฒฝ๋กœ์—์„œ ๋ฆฌํ”„ ๋…ธํŠธ๊นŒ์ง€์˜ ๋ธ”๋ž™ ๋…ธ๋“œ ์ˆ˜(๋ธ”๋ž™ ๋†’์ด)๋Š” ๋™์ผํ•ด์•ผ ํ•œ๋‹ค.

์ด ๊ทœ์น™์€ ํŠธ๋ฆฌ๊ฐ€ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๋„๋ก ๋ณด์žฅํ•˜๋ฉฐ, ์‚ฝ์ž… ๋ฐ ์‚ญ์ œ ์ž‘์—… ํ›„์—๋„ ํŠธ๋ฆฌ๊ฐ€ ๊ท ํ˜• ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ๋„์™€์ค€๋‹ค.

 

NIL ๋…ธ๋“œ

NIL์€ ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ(Red-Black Tree)์—์„œ ๋ฆฌํ”„ ๋…ธ๋“œ(leaf node)๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํŠน๋ณ„ํ•œ ๋…ธ๋“œ์ด๋‹ค.

 

๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ์—์„œ ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š” NIL ๋…ธ๋“œ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค. ์ด ๋…ธ๋“œ๋Š” ํŠธ๋ฆฌ์˜ ๋์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ž์‹์ด ์—†๋Š” ๋…ธ๋“œ๋“ค์˜ ์ž์‹ ๋…ธ๋“œ ์—ญํ• ์„ ํ•œ๋‹ค. ๋˜ํ•œ ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ(NIL ๋…ธ๋“œ)๋Š” ํ•ญ์ƒ ๊ฒ€์€์ƒ‰์œผ๋กœ ์„ค์ •๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ์ด์œ ๋Š” ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๊ณ , ํŠธ๋ฆฌ์˜ ๊ท ํ˜• ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

NIL ๋…ธ๋“œ์˜ ์—ญํ• 

1. ๊ท ํ˜• ์œ ์ง€

๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ๋Š” ์Šค์Šค๋กœ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ๋ชจ๋‘ ๊ฒ€์€์ƒ‰์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋น„์–ด ์žˆ๋Š” ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” NIL ๋…ธ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

2. ํŠธ๋ฆฌ์˜ ์ •์˜

๋ชจ๋“  ๋…ธ๋“œ์—์„œ ๋ฆฌํ”„ ๋…ธ๋“œ๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ์—๋Š” ๊ฐ™์€ ์ˆ˜์˜ ๊ฒ€์€์ƒ‰ ๋…ธ๋“œ๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋Š” ์กฐ๊ฑด์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ž์‹์ด ์—†๋Š” ๋…ธ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ ๊ฒ€์€์ƒ‰์ธ NIL ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

 

๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ์˜ ๋™์ž‘

๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ๋Š” ์‚ฝ์ž… ๋ฐ ์‚ญ์ œ ์—ฐ์‚ฐ์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๋ฉฐ, ์ด๋Ÿฌํ•œ ์—ฐ์‚ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ ˆ์ฐจ๋ฅผ ํฌํ•จํ•œ๋‹ค.

1. ์‚ฝ์ž…

์ƒˆ ๋…ธ๋“œ๋Š” ์ฒ˜์Œ์— ๋ ˆ๋“œ๋กœ ์‚ฝ์ž…๋œ๋‹ค.

์‚ฝ์ž… ํ›„, ํŠธ๋ฆฌ๋Š” ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ์˜ ๊ทœ์น™์„ ์œ„๋ฐ˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ด๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•œ ์žฌ์กฐ์ • ๋ฐ ์ƒ‰์ƒ ๋ณ€๊ฒฝ ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋œ๋‹ค.

ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ๋…ธ๋“œ์˜ ์ƒ‰์ƒ์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜, ํšŒ์ „(์ขŒ์ธก ํšŒ์ „, ์šฐ์ธก ํšŒ์ „)์„ ์ˆ˜ํ–‰ํ•ด ๊ท ํ˜•์„ ์œ ์ง€ํ•œ๋‹ค.

2. ์‚ญ์ œ

์‚ญ์ œํ•  ๋…ธ๋“œ๊ฐ€ ๋ธ”๋ž™์ธ ๊ฒฝ์šฐ, ํŠธ๋ฆฌ์˜ ๋ธ”๋ž™ ๋†’์ด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€์ ์ธ ์กฐ์ •์ด ํ•„์š”ํ•˜๋‹ค

์‚ญ์ œ ํ›„, ๋…ธ๋“œ์˜ ์ƒ‰์ƒ ๋ณ€๊ฒฝ ๋ฐ ํšŒ์ „์„ ํ†ตํ•ด ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์„ ๋ณต์›ํ•œ๋‹ค.

 

๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ์˜ ํšŒ์ „ ์—ฐ์‚ฐ

ํšŒ์ „ ์—ฐ์‚ฐ์€ ํŠธ๋ฆฌ์˜ ๊ตฌ์กฐ๋ฅผ ์žฌ์กฐ์ •ํ•˜์—ฌ ๊ท ํ˜•์„ ๋งž์ถ”๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ฃผ๋กœ ๋‘ ๊ฐ€์ง€ ํšŒ์ „์ด ์žˆ๋‹ค.

  1. ์ขŒ์ธก ํšŒ์ „ Left Rotation
    • ํŠน์ • ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ์œผ๋กœ ํšŒ์ „ํ•˜์—ฌ, ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์„ ๋งž์ถ˜๋‹ค.
  2. ์šฐ์ธก ํšŒ์ „ Right Rotation
    • ํŠน์ • ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํšŒ์ „ํ•˜์—ฌ, ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์„ ๋งž์ถ˜๋‹ค.

 

๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ์˜ ์˜ˆ์‹œ

 

  • ๋ฃจํŠธ ๋…ธ๋“œ 10์€ ๋ธ”๋ž™์ด๋‹ค.
  • 10์˜ ์™ผ์ชฝ ์ž์‹ 5๋Š” ๋ธ”๋ž™์ด๊ณ , ๊ทธ ์ž์‹์ธ 7์€ ๋ ˆ๋“œ, null ๋…ธ๋“œ๋Š” ๋ธ”๋ž™์ด๋‹ค.
  • 10์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹ 20์€ ๋ธ”๋ž™์ด๊ณ , ๊ทธ ์ž์‹์ธ 15, 25๋Š” ๋ ˆ๋“œ์ด๋‹ค.
  • ๋ชจ๋“  ๋ฆฌํ”„(null ๋…ธ๋“œ)๋Š” ๋ธ”๋ž™์ด๋‹ค
  • ๋ฃจํŠธ์—์„œ ๋ฆฌํ”„๊นŒ์ง€์˜ ๊ฒฝ๋กœ์— ์žˆ๋Š” ๋ธ”๋ž™ ๋…ธ๋“œ ์ˆ˜๋Š” ๋ชจ๋‘ ๋™์ผํ•˜๋‹ค

 

๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ์—์„œ ์‚ฝ์ž… ์˜ˆ์‹œ 

๋‹ค์Œ์€ ์‚ฝ์ž… ๊ณผ์ •์—์„œ ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ์‹œ์ด๋‹ค.

1. ์ดˆ๊ธฐ ํŠธ๋ฆฌ

 

        10 (B)
       /     \
   5 (R)      20 (R)
  /   \       /    \
N(B) N(B)  N(B)  N(B)

 

์ด ์ƒํƒœ์—์„œ 15๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค. 

 

2. ์‚ฝ์ž… ํ›„ ํŠธ๋ฆฌ

        10 (B)
       /     \
    5 (B)   20 (B)
            /
         15 (R)

 

์‚ฝ์ž…๋œ 15 ๋…ธ๋“œ๋Š” ๋ ˆ๋“œ์ด๊ณ , ๋…ธ๋“œ 5์™€ ๋…ธ๋“œ 20์€ ๋ธ”๋ž™์œผ๋กœ ์ƒ‰์ƒ์ด ๋ณ€๊ฒฝ๋๋‹ค.

 

๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„

๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ๋Š” ๊ท ํ˜• ์žกํžŒ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์ด๋ฏ€๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

  • ๊ฒ€์ƒ‰ : O(log N)
  • ์‚ฝ์ž… : O(log N)
  • ์‚ญ์ œ :O(log N)

๊ท ํ˜•์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ํšŒ์ „ ์—ฐ์‚ฐ๊ณผ ์ƒ‰์ƒ ๋ณ€๊ฒฝ์ด ์‚ฝ์ž… ์‚ญ์ œ ์‹œ ๋ฐœ์ƒํ•˜์ง€๋งŒ, ๊ทธ ์—ฐ์‚ฌ๋“ค์ด ๋น„์šฉ๋„ O(log N) ๋‚ด์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค.

 

๋ ˆ๋“œ- ๋ธ”๋ž™ ํŠธ๋ฆฌ์˜ ์žฅ์ 

๊ท ํ˜• ์œ ์ง€

์‚ฝ์ž… ๋ฐ ์‚ญ์ œ ์—ฐ์‚ฐ ํ›„์—๋„ ํŠธ๋ฆฌ๊ฐ€ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜์—ฌ ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ O(log N)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋ณด์žฅํ•œ๋‹ค.

ํšจ์œจ์ ์ธ ํƒ์ƒ‰

๋ชจ๋“  ํƒ์ƒ‰ ์—ฐ์‚ฐ์ด ๊ท ํ˜• ์žกํžŒ ์ƒํƒœ์—์„œ ์ˆ˜ํ–‰๋˜์–ด ํšจ์œจ์ ์ด๋‹ค.