jinsusong / CS-Study

CS
3 stars 5 forks source link

Red-Black Tree #76

Open SW-H opened 1 year ago

SW-H commented 1 year ago

๐Ÿ‘ฝ ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ(Red-Black Tree = RB Tree)

์ž๊ฐ€ ๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋กœ์„œ ์—ฐ๊ด€ ๋ฐฐ์—ด ๋“ฑ์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์“ฐ์ด๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ (์ž๊ฐ€ ๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ : ๋…ธ๋“œ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ์ด๋ฃจ์–ด์งˆ ๋•Œ ์ž๋™์œผ๋กœ ๊ท ํ˜• ํŠธ๋ฆฌ๋ฅผ ์œ ์ง€ํ•˜๋Š” ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ - AVL, ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ, ์ด์ง„ ํž™)

โ˜‘๏ธ ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ์˜ ์กฐ๊ฑด

  1. ๋ชจ๋“  ๋…ธ๋“œ๋Š” ๋นจ๊ฐ„์ƒ‰ ํ˜น์€ ๊ฒ€์€์ƒ‰์ด๋‹ค.
  2. ๋ฃจํŠธ ๋…ธ๋“œ๋Š” ๊ฒ€์€์ƒ‰์ด๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋Š” ํ•ญ์ƒ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ์‚ฝ์ž…)
  3. ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ(NIL)๋“ค์€ ๊ฒ€์€์ƒ‰์ด๋‹ค.

$\quad$ (NIL : null leaf, ์ž๋ฃŒ๋ฅผ ๊ฐ–์ง€ ์•Š๊ณ  ํŠธ๋ฆฌ์˜ ๋์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋…ธ๋“œ)

  1. ๋นจ๊ฐ„์ƒ‰ ๋…ธ๋“œ์˜ ์ž์‹์€ ๊ฒ€์€์ƒ‰์ด๋‹ค. $\quad$ == No Double Red(๋นจ๊ฐ„์ƒ‰ ๋…ธ๋“œ๊ฐ€ ์—ฐ์†์œผ๋กœ ๋‚˜์˜ฌ ์ˆ˜ ์—†๋‹ค)
  2. ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ์—์„œ Black Depth๋Š” ๊ฐ™๋‹ค. $\quad$ == ๋ฆฌํ”„๋…ธ๋“œ์—์„œ ๋ฃจํŠธ ๋…ธ๋“œ๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒฝ๋กœ์—์„œ ๋งŒ๋‚˜๋Š” ๊ฒ€์€์ƒ‰ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค.

โ˜‘๏ธ ๋ฐ์ดํ„ฐ ์‚ฝ์ž… ๊ณผ์ •

  1. ์ƒˆ๋กœ์šด ๋…ธ๋“œ(N), ๋ถ€๋ชจ ๋…ธ๋“œ(P), ์กฐ์ƒ ๋…ธ๋“œ(G)๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.
  2. ์…‹ ์ค‘ ์ค‘๊ฐ„๊ฐ’์„ ๋ถ€๋ชจ๋กœ ๋งŒ๋“ค๊ณ  ๋‚˜๋จธ์ง€ ๋‘˜์„ ์ž์‹์œผ๋กœ ๋งŒ๋“ ๋‹ค.
  3. ์ƒˆ๋กœ ๋ถ€๋ชจ๊ฐ€ ๋œ ๋…ธ๋“œ๋ฅผ ๊ฒ€์€์ƒ‰์œผ๋กœ ๋งŒ๋“ค๊ณ  ๋‚˜๋จธ์ง€ ์ž์‹๋“ค์„ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๋งŒ๋“ ๋‹ค.
  1. ์ƒˆ๋กœ์šด ๋…ธ๋“œ(N)์˜ ๋ถ€๋ชจ(P)์™€ ์‚ผ์ดŒ(U)์„ ๊ฒ€์€์ƒ‰์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์กฐ์ƒ(G)์„ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๋ฐ”๊พผ๋‹ค. 1-1. ์กฐ์ƒ(G)์ด ๋ฃจํŠธ ๋…ธ๋“œ๋ผ๋ฉด ๊ฒ€์€์ƒ‰์œผ๋กœ ๋ฐ”๊พผ๋‹ค. 1-2. ์กฐ์ƒ(G)์„ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๋ฐ”๊ฟจ์„ ๋•Œ ๋˜๋‹ค์‹œ Double Red๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ๋˜๋‹ค์‹œ Restructuring ํ˜น์€ Recoloring์„ ์ง„ํ–‰ํ•ด์„œ Double Red ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.