Skip to content

Latest commit

ย 

History

History
135 lines (71 loc) ยท 5.1 KB

Red_Black_Tree.md

File metadata and controls

135 lines (71 loc) ยท 5.1 KB

Red-Black Tree

BST์—์„œ ํ•œ์ชฝ์—๋งŒ ๋…ธ๋“œ๋“ค์ด ์น˜์šฐ์นœ ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค. -> ํƒ์ƒ‰์„ ์œ„ํ•œ ์‹œ๊ฐ„์ด ๋Š˜์–ด๋‚œ๋‹ค. -> ์ด๋ฅผ ๋ณด์™„ํ•˜์—ฌ ๊ท ํ˜•์žกํžŒ ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ ์ž ๋งŒ๋“ค์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ

Red-Black Tree๋Š” ๊ท ํ˜• ์žกํžŒ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ( balanced binary search tree )


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

  1. Root property: ๋ฃจํŠธ ๋…ธ๋“œ์˜ ์ƒ‰๊น”์€ ๊ฒ€์ •์ด๋‹ค.

  2. External property: ๋ชจ๋“  external(leaf) node๋“ค์€ ๊ฒ€์ •์ด๋‹ค.

  3. Internal property: ๋นจ๊ฐ•๋…ธ๋“œ์˜ ์ž์‹์€ ๋ฐ˜๋“œ์‹œ ๊ฒ€์ •์ด๋‹ค.

    -> No Double Red: ๋นจ๊ฐ„์ƒ‰ ๋…ธ๋“œ๊ฐ€ ์—ฐ์†์œผ๋กœ ๋‚˜์˜ฌ ์ˆ˜ ์—†๋‹ค.

  4. Depth property: ๋ชจ๋“  ๋ฆฌํ”„๋…ธ๋“œ์—์„œ black depth๋Š” ๊ฐ™๋‹ค.

    -> ๋ฆฌํ”„๋…ธ๋“œ์—์„œ ๋ฃจํŠธ๋…ธ๋“œ๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒฝ๋กœ์—์„œ ๋งŒ๋‚˜๋Š” ๋ธ”๋ž™๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋Š” ๊ฐ™๋‹ค.(๊ทธ๋ƒฅ ๋…ธ๋“œ์˜ ์ˆ˜๋Š” ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.)

์œ„์˜ ์กฐ๊ฑด๋“ค์ด Red-Black Tree์˜ ๋†’์ด๋ฅผ logn์— ๋ฐ”์šด๋“œ๋˜๋„๋ก ํ•ด์ค€๋‹ค.



Red-Black Tree ๊ตฌ์„ฑ ์˜ˆ์‹œ

[4,2,8,3]

  1. Root property์˜ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ฃจํŠธ ๋…ธ๋“œ์˜ ์ƒ‰๊น”์€ ๊ฒ€์ •์„ ์ค๋‹ˆ๋‹ค.

  1. ๋ฃจํŠธ ๋…ธ๋“œ ์™ธ์— ์‚ฝ์ž…๋˜๋Š” ๋…ธ๋“œ์˜ ์ƒ‰๊น”์€ Red๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋…ธ๋“œ 3์„ ์‚ฝ์ž…ํ•˜๋ฉด BST์˜ ํŠน์ง•์— ๋”ฐ๋ผ ๋…ธ๋“œ 2์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹์œผ๋กœ ๋ถ™๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด Internal property ์กฐ๊ฑด์„ ์œ„๋ฐ˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด 2๊ฐ€์ง€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

  • Restructuring

  • Recoloring



Restructuring & Recoloring

ํ˜„์žฌ insert ๋…ธ๋“œ์˜ ๋ถ€๋ชจ์˜ ํ˜•์ œ ๋…ธ๋“œ์˜ ์ƒ‰๊น”์— ๋”ฐ๋ผ ๋งค์ปค๋‹ˆ์ฆ˜์ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

  • Restructuring: ๋ถ€๋ชจ์˜ ํ˜•์ œ ๋…ธ๋“œ๊ฐ€ Black์ผ ๋•Œ

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

  • ๋‹ค๋ฅธ ์„œ๋ธŒํŠธ๋ฆฌ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— double red๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์ „๊ณผ ํ›„์˜ black node์˜ ๊ฐœ์ˆ˜์— ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค. -> Double Red ์กฐ๊ฑด์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. -> restructuring์€ ์›ํ์— ๋๋‚œ๋‹ค.

  • Recoloring: ๋ถ€๋ชจ์˜ ํ˜•์ œ ๋…ธ๋“œ๊ฐ€ Red์ผ ๋•Œ

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

  • ๋ถ€๋ชจ์™€ ๋ถ€๋ชจ์˜ ํ˜•์ œ๋ฅผ ๊ฒ€์ •์œผ๋กœ ๋ฐ”๊พธ๋ฉด Depth Property ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋‚˜์š”? -> Black Depth๋Š” ์ผ์ œํžˆ 1 ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค.


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

  • ๊ฒ€์ƒ‰์˜ ์‹œ๊ฐ„๋ณต์žก๋„: O(logn) -> balanced binary search tree์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

  • ์‚ฝ์ž…์˜ ์‹œ๊ฐ„๋ณต์žก๋„: O(logn) ->

    • Restructuring: ์ˆœ์„œ ๊ฒฐ์ •, ํŠธ๋ฆฌ๋กœ ๋งŒ๋“œ๋Š” ์‹œ๊ฐ„, ์›๋ž˜ ๋…ธ๋“œ์˜ ๊ตฌ์กฐ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์‹œ๊ฐ„ ๋ชจ๋‘ ์ƒ์ˆ˜ ์‹œ๊ฐ„์ด๊ธฐ ๋•Œ๋ฌธ์— restructuring ์ž์ฒด ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1)์ด์ง€๋งŒ ์–ด๋–ค ๋…ธ๋“œ๋ฅผ insertํ•œ ๋’ค ์ผ์–ด๋‚˜๋ฏ€๋กœ ์ด ์ˆ˜ํ–‰ ์‹œ๊ฐ„์€ O(logn)์ž…๋‹ˆ๋‹ค.
    • Recoloring: insertํ•ด์ค„ ์œ„์น˜๋ฅผ ์ฐพ๋Š”๋ฐ O(logn)์— recoloring์„ ํ•ด์ฃผ๋Š”๋ฐ ์ƒ‰๊น”๋งŒ ๋ฐ”๊ฟ”์ฃผ๊ธฐ ๋•Œ๋ฌธ์— O(1)์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ณ  root node๊นŒ์ง€ ํผ์ ธ ๋‚˜๊ฐ€๋ฉด O(logn)์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค
  • ์‚ญ์ œ์˜ ์‹œ๊ฐ„๋ณต์žก๋„: O(logn)



AVL Tree์™€ Red-Black Tree ์ฐจ์ด
  • AVL Tree๊ฐ€ Red Black Tree๋ณด๋‹ค ๋น ๋ฅธ Search๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

    • AVL Tree๊ฐ€ ๋” ์—„๊ฒฉํ•œ Balanced๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • Red Black Tree์€ AVL Tree๋ณด๋‹ค ๋น ๋ฅธ ์‚ฝ์ž…๊ณผ ์ œ๊ฑฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

    • AVL Tree๋ณด๋‹ค Balanced๋ฅผ ๋А์Šจํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • Red Black Tree๋Š” AVL Tree๋ณด๋‹ค ์ƒ‰๊น”์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ Space Complexity๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • Red Black Trees๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์–ธ์–ด์˜ map, multimap, multiset์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • AVL tree๋Š” ์กฐํšŒ์— ์†๋„๊ฐ€ ์ค‘์š”ํ•œ Database์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.