Red Black Tree

Red Black Tree

Red Black Tree(์ดํ•˜ RB)๋Š” ๊ฐ€์žฅ ์œ ๋ช…ํ•˜๊ณ  ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” โ€˜๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌโ€™ ๊ตฌ์กฐ์ด๋‹ค.

์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด RB์˜ ๋…ธ๋“œ์—๋Š” ์ƒ‰๊น”์ด ์žˆ๋‹ค. ๋นจ๊ฐ„์ƒ‰๊ณผ ๊ฒ€์€์ƒ‰.

ํ•œ ๋ฒˆ ๊ทธ๋ฆผ์„ ๋ณด์ž.

Introduction to Red-Black Tree - GeeksforGeeks

๊ฒ€์€์ƒ‰ ๋…ธ๋“œ์™€ ๋นจ๊ฐ„์ƒ‰ ๋…ธ๋“œ๊ฐ€ ์žˆ๋‹ค.

๋ฆฌํ”„๋…ธ๋“œ๋ฅผ ๋ณด๋ฉด NIL์ด๋ผ๊ณ  ํ‘œ๊ธฐ๊ฐ€ ๋˜์–ด์žˆ๋Š”๋ฐ, Python์˜ None, C์˜ NULL๊ณผ ๊ฐ™๋‹ค.

RB์—์„œ๋Š” NIL ๋…ธ๋“œ๋ฅผ ๋…๋ฆฝ๋œ ๋…ธ๋“œ๋กœ ํ‘œํ˜„ํ•˜๊ณ , ํ•ด๋‹น ๋…ธ๋“œ๋ฅผ ๋ชจ๋‘ ๋ฆฌํ”„ ๋…ธ๋“œ๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋กœ ํ•œ๋‹ค.

Red black Tree์—์„œ๋Š” NIL ๋…ธ๋“œ๋ฅผ ๋ฆฌํ”„๋…ธ๋“œ๋ผ๊ณ  ํ‘œํ˜„. ๋‚˜๋จธ์ง€๋ฅผ ๋‚ด๋ถ€ ๋…ธ๋“œ๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.

Red Black Tree์˜ ์กฐ๊ฑด

Red Black Tree๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์„ฏ ๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค.

๋‹น์—ฐํ•œ ์–˜๊ธฐ์ง€๋งŒ โ€˜์ด์ง„ ํƒ์ƒ‰ํŠธ๋ฆฌ์ด๋ฉด์„œโ€™ ํ•ด๋‹น ์กฐ๊ฑด๋“ค์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค.

  1. ๋ชจ๋“  ๋…ธ๋“œ๋Š” ์ƒ‰์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค (Red / Black)

  2. ๋ฃจํŠธ ๋…ธ๋“œ๋Š” Black Node์—ฌ์•ผ ํ•œ๋‹ค.

  3. ๋ฆฌํ”„ ๋…ธ๋“œ๋Š” Black Node์—ฌ์•ผ ํ•œ๋‹ค.

  4. Red Node๋Š” ๋‘ ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง„๋‹ค. (์ค‘์š”)

    Red Node๋Š” ๋ฐ˜๋“œ์‹œ ๋‘ ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๊ฐ€ Black Node์—ฌ์•ผ ํ•œ๋‹ค.

  5. ๊ฐ ๋…ธ๋“œ์—์„œ ๋ฆฌํ”„ ๋…ธ๋“œ(NIL ๋…ธ๋“œ)๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ์— ์žˆ๋Š” Black Node์˜ ์ˆ˜๋Š” ํ•ญ์ƒ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.

    ์œ„ ๊ทธ๋ฆผ์„ ์˜ˆ๋กœ ๋“ค๋ฉด, 18๋ฒˆ ๋…ธ๋“œ์—์„œ NIL ๋…ธ๋“œ๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ์˜ Black Node ์ˆ˜๋Š” ์–ด๋””๋กœ ๊ฐ€๋˜ ํ•ญ์ƒ ๊ฐ™๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€ ์™”์„ ๋•Œ, ์ด๋Ÿฐ ์ƒ๊ฐ์ด ๋“ ๋‹ค.

๋Œ€์ฒด ์ด ์ง“๊ฑฐ๋ฆฌ๋ฅผ ์™œ ํ•ด์•ผํ• ๊นŒ? ์ด ํŠธ๋ฆฌ์˜ ์žฅ์ ์ด ๋ฌด์—‡์ธ๊ฐ€?

์„ค๋ช…์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์šฉ์–ด๋ฅผ ์ •์˜ํ•œ๋‹ค.

H(v) = V์˜ ๋†’์ด (height)

bH(v) = V์—์„œ ๋ฆฌํ”„๋…ธ๋“œ๋กœ ๊ฐˆ ๋•Œ ๋งŒ๋‚˜๋Š” Black Node์˜ ๊ฐœ์ˆ˜ (black height)

  • v๋Š” ์ œ์™ธํ•˜๊ณ  ๋ฆฌํ”„๋…ธ๋“œ๋กœ ๊ฐˆ ๋•Œ ๋งŒ๋‚˜๋Š” Black Node์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ผ๋‹ค.

์ด์ œ๋ถ€ํ„ฐ ์•„๋ž˜ ์‚ฌ์‹ค์„ ์ฆ๋ช…ํ•˜๊ฒ ๋‹ค. ๋‚ด๋ถ€ ๋…ธ๋“œ๋Š” NIL ๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋…ธ๋“œ๋ผ๋Š” ๊ฒƒ์„ ์ƒ๊ธฐํ•˜์ž.

V์˜ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋‚ด๋ถ€ ๋…ธ๋“œ ๊ฐœ์ˆ˜ >= 2^bH(v) - 1

์ฆ๋ช…์€ H(v), V์˜ Height์— ๋Œ€ํ•œ ๊ท€๋‚ฉ๋ฒ•(induction)์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค.

Base Case : H(v) = 0

H(v)๊ฐ€ ๊ฐ€์žฅ ์ž‘์„ ๋•Œ๋Š” 0์ด๋‹ค. ๋†’์ด๊ฐ€ 0์ด๋ผ๋Š” ๊ฒƒ์€ ๋ฆฌํ”„ ๋…ธ๋“œ๋ฐ–์— ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๋ฆฌํ”„ ๋…ธ๋“œ๋Š” NIL node์ด๋‹ค. NIL node๋Š” Black์ด๋‹ค.

์ฆ‰, bH(v)๋Š” 0์ด๋‹ค.

H(v) = 0 ์ผ ๋•Œ, bH(v) = 0์ด๋‹ค.

v์˜ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋‚ด๋ถ€ ๋…ธ๋“œ ๊ฐœ์ˆ˜๋Š” 0์ผ ๊ฒƒ์ด๋‹ค.

2^bH(v)๋Š” 2์˜ 0์Šน์œผ๋กœ, 1์ผ ๊ฒƒ์ด๋‹ค.

์ฆ‰, 0 = 0์œผ๋กœ ์œ„์˜ ๊ณต์‹์ด ์„ฑ๋ฆฝํ•œ๋‹ค.

Hypothesis : H(v) <= k

H(v)๊ฐ€ ํŠน์ •ํ•œ ์ˆ˜ K๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๋†’์ด์— ๋Œ€ํ•ด์„œโ€ฆ

| v์˜ ์„œ๋ธŒํŠธ๋ฆฌ | >= 2^bH(v) - 1

์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.

๊ฐ€์ •์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฆ๋ช…ํ•  ํ•„์š”๋Š” ์—†๋‹ค.

Induction : H(v) = k + 1์ผ ๋•Œ ์„ฑ๋ฆฝํ•จ์„ ์ฆ๋ช…

ํ•ด๋‹น ๋ถ€๋ถ„์€ ์œ ํŠœ๋ธŒ ๊ฐ•์˜๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

๊ทธ๋ ค๋ณด๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์žฌ๋Šฅ์ด ๋ชจ์ž๋ผ์„œ ๋งํฌ๋กœ ๋Œ€์‹ ํ•œ๋‹ค.

Last updated