Skip to content

Latest commit

ย 

History

History
176 lines (118 loc) ยท 10.5 KB

File metadata and controls

176 lines (118 loc) ยท 10.5 KB

๐Ÿ”ดโšซ๏ธ Red-Black Tree

์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์™€ ๋ ˆ๋“œ๋ธ”๋ž™ ํŠธ๋ฆฌ(intro)

์˜๋„์น˜ ์•Š๊ฒŒ ์ด๋ฒˆ ํŒŒํŠธ๋„ ์ œ๊ฐ€ ํŠธ๋ฆฌ๋ฅผ ๋งž๊ฒŒ ๋๋„ค์š”๐Ÿ™‚. ์ง€๋‚œ ์‹œ๊ฐ„์— binary tree์™€ binary search tree์— ๋Œ€ํ•ด์„œ ์ค€๋น„๋ฅผ ํ–ˆ์—ˆ๋˜๊ฒŒ ๊ธฐ์–ต์ด ๋‚˜์‹œ๋‚˜์š”? ์ด๋ฒˆ์— ์•Œ์•„๋ณผ red-black tree๋„ BST์˜ ์ผ์ข…์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์— ๋Œ€ํ•ด ์งง๊ฒŒ ์‚ดํŽด๋ณด๊ณ  ๋ณธ๋ก ์œผ๋กœ ๋„˜์–ด๊ฐ€๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

BST๊ฐ€ ๊ฐ€์ง€๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์†์„ฑ๋งŒ ์ƒ๊ฐ์„ ํ•ด๋ด…์‹œ๋‹ค. ๋‚˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด ์™ผ์ชฝ ์ž์‹์€ ๋‚˜๋ณด๋‹ค ์ž‘์€ ๊ฐ’์„ ์˜ค๋ฅธ์ชฝ ์ž์‹์€ ๋‚˜๋ณด๋‹ค ํฐ ๋…€์„๋“ค๋งŒ ๋ชจ์•„๋†“์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ property๋งŒ ์ƒ๊ฐ์„ ํ•ด์„œ ์ „์ฒด Binary Search Tree๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ๋ฃจํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž‘์€ ๊ฐ’๋“ค์€ ์ „๋ถ€ ์™ผ์ชฝ์— ํฐ ๊ฐ’๋“ค์€ ์ „๋ถ€ ์˜ค๋ฅธ์ชฝ์— ์œ„์น˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ท ํ˜•์ด ์žกํžˆ์ง€ ์•Š์€ ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ด๋ณด๋ฉด ๊ฒ€์ƒ‰์˜ ์ตœ์•…์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(height)๊ฐ€ ๋‚˜์˜จ๋‹ค๋Š” ๊ฒƒ๋„ ๊ธฐ์–ต์ด ๋‚˜์‹œ๋‚˜์š”? ์™œ ์ตœ์•…์˜ ์ƒํ™ฉ์—์„œ ๋†’์ด๊ฐ€ ๋‚˜์˜ค๋Š”์ง€๋Š” ์กฐ๊ธˆ๋งŒ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ์ชฝ์œผ๋กœ๋งŒ ์ž๋ผ๋‚œ ํŠธ๋ฆฌ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋ฐ”๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (+ average case์—์„œ์˜ ๊ฒ€์ƒ‰์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(logn))

์ž ๊ทธ๋Ÿฌ๋ฉด ๋งŒ์•ฝ์— ๊ท ํ˜•์ด ์žกํžŒ ํŠธ๋ฆฌ๋กœ ๊ตฌ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด? ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(h)๊ฐ€ ์•„๋‹Œ O(logn)์— ๋ฐ”์šด๋“œ ์‹œํ‚ฌ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋†’์ด๊ฐ€ logn์œผ๋กœ ํ•ญ์ƒ ์ผ์ •ํ•˜๊ฒŒ ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ฐ‘์ด 2์ธ ๋กœ๊ทธํ•จ์ˆ˜์— ๋†’์ด๊ฐ€ ์ˆ˜๋ ดํ•˜๋Š” ์ด์œ ๋Š” ์ด์ง„ ํŠธ๋ฆฌ๋Š” ๋…ธ๋“œ๊ฐ€ 2๊ฐœ์”ฉ ๋Š˜์–ด๋‚˜๊ณ  ๊ฐ ๋ ˆ๋ฒจ์˜ ๋…ธ๋“œ ๊ฐœ์ˆ˜ = 2^(height-1)์ด๊ธฐ ๋•Œ๋ฌธ์ด์ฃ  ๊ทธ๋Ÿผ ์–‘๋ณ€์— ๋กœ๊ทธ๋ฅผ ์”Œ์›Œ์„œ height๋ฅผ ๊ตฌํ•ด์ฃผ๋ฉด ๋˜๊ฒ ์ฃ ?

์ •๋ฆฌํ•˜๋ฉด red black tree๋Š” bst์˜ ์ผ์ข…์ธ๋ฐ ๊ท ํ˜• ์žกํžŒ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

RbTree



๐Ÿ“š Table of Contents

Red-Black Tree ์กฐ๊ฑด

Red-Black Tree ์˜ˆ์‹œ

Reconstructing & Recoloring

Red-Black Tree๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ์กฐ๊ฑด

1. Root property :๋ฃจํŠธ ๋…ธ๋“œ์˜ ์ƒ‰๊น”์€ ๊ฒ€์ •์ด๋‹ค.
2. External property :๋ชจ๋“  external(leaf) node๋“ค์€ ๊ฒ€์ •์ด๋‹ค.
3. Internal property :๋นจ๊ฐ•๋…ธ๋“œ์˜ ์ž์‹์€ ๋ฐ˜๋“œ์‹œ ๊ฒ€์ •์ด๋‹ค.
-> no double red :๋นจ๊ฐ„์ƒ‰ ๋…ธ๋“œ๊ฐ€ ์—ฐ์†์œผ๋กœ ๋‚˜์˜ฌ ์ˆ˜ ์—†๋‹ค.
4. Depth property :๋ชจ๋“  ๋ฆฌํ”„๋…ธ๋“œ์—์„œ black depth๋Š” ๊ฐ™๋‹ค.
-> ๋ฆฌํ”„๋…ธ๋“œ์—์„œ ๋ฃจํŠธ๋…ธ๋“œ๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒฝ๋กœ์—์„œ ๋งŒ๋‚˜๋Š” ๋ธ”๋ž™๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋Š” ๊ฐ™๋‹ค.(๊ทธ๋ƒฅ ๋…ธ๋“œ์˜ ์ˆ˜๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.)

์œ„์˜ ์กฐ๊ฑด์œผ๋กœ๋งŒ ์‚ดํŽด๋ณด๋ฉด ๋„๋Œ€์ฒด ์–ด๋–ป๊ฒŒ rb tree๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ธ์ง€ ๋А๋‚Œ์ด ์ž˜ ์˜ค์ง€ ์•Š์œผ๋‹ˆ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด์„œ ํ•œ ๋ฒˆ ์•Œ์•„๋ด์š”.

rootNode1

1๋ฒˆ ์กฐ๊ฑด์œผ๋กœ ์ธํ•ด์„œ ๋งŒ์•ฝ์— ์ฒ˜์Œ ๋ฃจํŠธ ๋…ธ๋“œ์— ๊ฐ’์„ ์‚ฝ์ž…ํ•œ๋‹ค๋ฉด ๊ทธ ๋…ธ๋“œ์˜ ์ƒ‰์€ ๊ฒ€์ •์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฃจํŠธ ๋…ธ๋“œ ์‚ฝ์ž… ์™ธ์— ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ ๋…ธ๋“œ์˜ ์ƒ‰๊น”์€ red์ž…๋‹ˆ๋‹ค.

rbTree1

2์™€ 8์„ ์‚ฝ์ž…ํ•˜๊ฒŒ ๋˜๋ฉด ์ผ๋‹จ ์œ„ ์กฐ๊ฑด์— ์œ„๋ฐฐ๋˜๋Š” ์ƒํ™ฉ์€ ๋ฒŒ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋…ธ๋“œ๋ฅผ ํ•˜๋‚˜ ๋” ์‚ฝ์ž…์„ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด

rbTree2

3์„ ์‚ฝ์ž…ํ•˜๋ฉด 4๋ณด๋‹ค ์ž‘๊ธฐ ๋•Œ๋ฌธ์— ์™ผ์ชฝ ์„œ๋ธŒ ํŠธ๋ฆฌ๋กœ ๊ฐ€๊ฒŒ๋˜๊ณ  ๊ฑฐ๊ธฐ์„œ 2๋ฒˆ๋ณด๋‹ค ํฌ๊ธฐ๋•Œ๋ฌธ์— 2์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹์œผ๋กœ ๋ถ™๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 3๋ฒˆ ์กฐ๊ฑด์— ์œ„๋ฐฐ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฒŒ์–ด์ง€๋Š”๋ฐ (๋นจ๊ฐ• ๋…ธ๋“œ์˜ ์ž์‹์€ ๊ฒ€์ •๋…ธ๋“œ์—ฌ์•ผ ํ•จ) ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ 2๊ฐ€์ง€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

  1. Restructuring
  2. Recoloring

Restructuring & Recoloring

Restructuring structAndColor

Recoloring recoloring

double red๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํ˜„์žฌ insert๋…ธ๋“œ์˜ ๋ถ€๋ชจ์˜ ํ˜•์ œ ๋…ธ๋“œ์˜ ์ƒ‰๊น”์— ๋”ฐ๋ผ์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋งŒ์•ฝ์— ๋ถ€๋ชจ์˜ ํ˜•์ œ ๋…ธ๋“œ ์ปฌ๋Ÿฌ๊ฐ€ ๋ธ”๋ž™์ด๋ฉด restructuring ๋ถ€๋ชจ์˜ ํ˜•์ œ ๋…ธ๋“œ ์ปฌ๋Ÿฌ๊ฐ€ ๋ ˆ๋“œ์ด๋ฉด recoloring์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Restructuring

restructuring์— ๊ฐœ์ž…ํ•˜๋Š” ๋…ธ๋“œ๋Š” ํ˜„์žฌ insert๋œ ๋…ธ๋“œ(z), ๋ถ€๋ชจ ๋…ธ๋“œ(v), ๋‚ด ๋ถ€๋ชจ์˜ ๋ถ€๋ชจ ๋…ธ๋“œ(root)์ž…๋‹ˆ๋‹ค. (์œ„ case1 ๊ทธ๋ฆผ์œผ๋กœ ์‚ดํŽด๋ณด์„ธ์š”.)

1. ๋‚˜(z)์™€ ๋‚ด ๋ถ€๋ชจ(v), ๋‚ด ๋ถ€๋ชจ์˜ ๋ถ€๋ชจ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
2. ๋ฌด์กฐ๊ฑด ๊ฐ€์šด๋ฐ ์žˆ๋Š” ๊ฐ’์„ ๋ถ€๋ชจ๋กœ ๋งŒ๋“ค๊ณ  ๋‚˜๋จธ์ง€ ๋‘˜์„ ์ž์‹์œผ๋กœ ๋งŒ๋“ ๋‹ค.
3. ๊ฐ€์šด๋ฐ ์žˆ๋Š” ๊ฐ’(๋ถ€๋ชจ๊ฐ€ ๋œ ๊ฐ’)์„ ๊ฒ€์ •์œผ๋กœ ๋งŒ๋“ค๊ณ  ๊ทธ ๋‘ ์ž์‹๋“ค์„ ๋นจ๊ฐ•์œผ๋กœ ๋งŒ๋“ ๋‹ค.
  1. ๋‚˜, ๋ถ€๋ชจ, ๋ถ€๋ชจ์˜ ๋ถ€๋ชจ ์„ ํƒ

  1. ์ผ์ž๋กœ ๋‘๊ณ  ์›์†Œ ์ •๋ ฌํ•œ๋‹ค.

  1. ์ •๋ ฌ๋œ ์›์†Œ์—์„œ ๊ฐ€์šด๋ฐ ๊ฐ’์„ ๋ถ€๋ชจ๋กœ ๋งŒ๋“ค๊ณ  ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.

  1. ํ˜„์žฌ ๋ฃจํŠธ ๋…ธ๋“œ๋งŒ ๊ฒ€์ •์ƒ‰ ๋‚˜๋จธ์ง€ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๋นจ๊ฐ•์ƒ‰์œผ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

  1. ์›๋ž˜ key๊ฐ€ 2์ธ ๋…ธ๋“œ z์˜ ๋ถ€๋ชจ์˜ ํ˜•์ œ ๋…ธ๋“œ๋ฅผ 4์ž์‹์œผ๋กœ ๋ถ™์—ฌ์ค€๋‹ค.

Restructuring์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„

restructuring์€ ๋‹ค๋ฅธ ์„œ๋ธŒํŠธ๋ฆฌ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— double red๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์ „๊ณผ ํ›„์˜ black node์˜ ๊ฐœ์ˆ˜์— ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค.4๋ฒˆ ์กฐ๊ฑด ๊ทธ๋Ÿฌ๋ฏ€๋Ÿฌ restructuring ์ž์ฒด ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1)์ด์ง€๋งŒ ์ˆœ์„œ ๊ฒฐ์ •, ํŠธ๋ฆฌ๋กœ ๋งŒ๋“œ๋Š” ์‹œ๊ฐ„, ์›๋ž˜ ๋…ธ๋“œ์˜ ๊ตฌ์กฐ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์‹œ๊ฐ„ ๋ชจ๋‘ ์ƒ์ˆ˜ ์‹œ๊ฐ„์ด๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ๋…ธ๋“œ๋ฅผ insertํ•œ ๋’ค ์ผ์–ด๋‚˜๋ฏ€๋กœ ์ด ์ˆ˜ํ–‰ ์‹œ๊ฐ„์€ O(logn)์ž…๋‹ˆ๋‹ค. (ํ˜„์žฌ ๋…ธ๋“œ๊ฐ€ ๋“ค์–ด๊ฐˆ ์œ„์น˜๋ฅผ ๋จผ์ € ์ฐพ๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ ๊ฒ€์ƒ‰์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋– ์˜ฌ๋ฆฌ์„ธ์šฉ)

Recoloring

1. ํ˜„์žฌ insert๋œ ๋…ธ๋“œ(z), ๋ถ€๋ชจ(v)์™€ ๋ถ€๋ชจ์˜ ํ˜•์ œ(w)๋ฅผ ๊ฒ€์ •์œผ๋กœ ํ•˜๊ณ  ๋‚ด ๋ถ€๋ชจ์˜ ๋ถ€๋ชจ๋ฅผ ๋นจ๊ฐ•์œผ๋กœ ํ•œ๋‹ค.
2. ๋ถ€๋ชจ์˜ ๋ถ€๋ชจ๊ฐ€ root node๊ฐ€ ์•„๋‹ˆ์—ˆ์„ ๋•Œ double red(3๋ฒˆ ์กฐ๊ฑด)๊ฐ€ ๋‹ค์‹œ ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. recoloring์„ ํ•˜๋Š” ์ƒํ™ฉ

  1. ์‚ฝ์ž…๋œ ๋…ธ๋“œ z์˜ ๋ถ€๋ชจ (v)์™€ ๊ทธ ๊ฒƒ์˜ ํ˜•์ œ(w)์˜ ์ƒ‰๊น”์„ ๊ฒ€์ •์œผ๋กœ ๋งŒ๋“ค์–ด ์ค€๋‹ค.

  1. ์‚ฝ์ž…๋œ ๋…ธ๋“œ(z)์˜ ๋ถ€๋ชจ์˜ ๋ถ€๋ชจ๋ฅผ ๋นจ๊ฐ•์œผ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.

  1. ๋งŒ์•ฝ ๋ถ€๋ชจ์˜ ๋ถ€๋ชจ๊ฐ€ root node๋ผ๋ฉด 1๋ฒˆ ์กฐ๊ฑด์— ์˜ํ•ด์„œ ๊ฒ€์ •์ด ๋œ๋‹ค.

  1. ํ•˜์ง€๋งŒ ์‚ฌ์‹ค ์•Œ๊ณ ๋ณด๋‹ˆ ์ง€๊ธˆ ์šฐ๋ฆฌ๊ฐ€ ๋ณด๋Š” ํŠธ๋ฆฌ๊ฐ€ ์–ด๋–ค ํŠธ๋ฆฌ์˜ ์ผ๋ถ€๋ถ„ ์„œ๋ธŒํŠธ๋ฆฌ๋ผ๋ฉด (4๋ฒˆ์€ root๊ฐ€ ์•„๋‹ˆ์—ˆ์Œ) ์ด ์ƒํƒœ๋กœ ๋‘ฌ์•ผํ•˜๋Š”๋ฐ 4๋ฒˆ ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ๋นจ๊ฐ•์ผ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด double red๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๊ฒฝ์šฐ recoloring์ด๋‚˜ restructuring์„ ํ•ด์ค˜์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ์ตœ์•…์˜ ๊ฒฝ์šฐ root node๊นŒ์ง€ ๋‹ค์‹œ ๋‘ ๊ฐ€์ง€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ด์šฉํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.



recoloring ์‹œ๊ฐ„ ๋ณต์žก๋„

๊ทธ๋Ÿฌ๋ฉด recoloring์—์„œ ๋ถ€๋ชจ ๋…ธ๋“œ์™€ ๋ถ€๋ชจ์˜ ํ˜•์ œ ๋…ธ๋“œ๋ฅผ ๊ฒ€์ •์œผ๋กœ ๋ฐ”๊ฟ”๋„ 4๊ฐœ ์กฐ๊ฑด์— ์œ„๋ฐฐ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๊ฐ€?
-> 4๋ฒˆ depth property๋ฅผ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค. black depth๋Š” 1๋งŒ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๋ผ ๊ด€๊ณ„ ์—†์Šต๋‹ˆ๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์•Œ์•„๋ณด๋ฉด insertํ•ด์ค„ ์œ„์น˜๋ฅผ ์ฐพ๋Š”๋ฐ O(logn) ์•ž์—์„œ ๊ณ„์† ๋ดค์œผ๋‹ˆ ์ด๊ฒƒ์— ๋Œ€ํ•œ ์˜๋ฌธ์ ์€ ์—†์œผ๋ฆฌ๋ผ ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค. recoloring์„ ํ•ด์ฃผ๋Š”๋ฐ ์ƒ‰๊น”๋งŒ ๋ฐ”๊ฟ”์ฃผ๊ธฐ ๋•Œ๋ฌธ์— O(1)์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ณ  ์•ž์„œ ์–ธ๊ธ‰ํ•œ root node๊นŒ์ง€ ํผ์ ธ ๋‚˜๊ฐ€๋ฉด O(logn)์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
Red-black tree์—์„œ ์‚ฝ์ž…์„ ํ•ด์ฃผ๋Š” ๊ฒฝ์šฐ ๋‘ ๊ฐ€์ง€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ ๋ชจ๋‘ O(logn)์ž…๋‹ˆ๋‹ค.

์ •๋ฆฌํ•˜๋ฉด, restructuring, recoloring ๋‘˜ ๋‹ค ๋ถ€๋ชจ์˜ ํ˜•์ œ ๋…ธ๋“œ์˜ ์ƒ‰๊น”์„ ์‚ดํŒŒ๋ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋ถ€๋ชจ์˜ ํ˜•์ œ ๋…ธ๋“œ์˜ ์ƒ‰๊น”์ด ๊ฒ€์ •์ผ ๋•Œ๋Š” restructuring ๋นจ๊ฐ•์ผ ๋•Œ๋Š” recoloring์„ ํ•ด์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.

  • restructuring์€ ์›ํ์— ๋๋‚œ๋‹ค. ๋‹ค๋ฅธ ์„œ๋ธŒํŠธ๋ฆฌ ์˜ํ–ฅ x
  • recoloring์€ 4๊ฐ€์ง€ ์กฐ๊ฑด์— ์œ„๋ฐฐ๋˜๋ฉด ๊ณ„์† ํ•ด์„œ ๋‹ค์‹œ ์ˆ˜ํ–‰ uncle(๋ถ€๋ชจ์˜ ํ˜•์ œ ๋…ธ๋“œ) ์ƒ‰๊น”์„ ๋ณด๊ณ  ๋‹ค์‹œ ๊ตฌ์„ฑํ•ด์•ผ๋˜๋Š”๋ฐ, ์ตœ์•…์˜ ๊ฒฝ์šฐ์— root node๊นŒ์ง€ ์ญ‰ ์˜ฌ๋ผ๊ฐ€์„œ ๊ณ„์† ์—ฐ์‚ฐํ•ด์•ผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋งˆ์ง€๋ง‰์œผ๋กœ STL์˜ mapํ•จ์ˆ˜๋„ red black tree๋กœ ๊ตฌ์„ฑ๋๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“š ์ฐธ๊ณ 

๊ฐœ๋…

๊ฐœ๋… ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜


[์‹œ๊ฐ„ ๋ณต์žก๋„](https://lordofkangs.tistory.com/80)

โ‰๏ธ QnA

  1. Red Black Tree์˜ ์ •์˜, ์„ฑ์งˆ 4๊ฐ€์ง€๋ฅผ ๋งํ•˜์‹œ์˜ค.
  1. Recoloring๊ณผ Restructing์„ ์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ํ•จ๊ป˜ ์„ค๋ช…ํ•˜์‹œ์˜ค.
  1. hash์—์„œ red-blackํŠธ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ, ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ ์–ธ์ œ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์‹œ์˜ค.