๐Ÿšง

Balanced Tree - B-tree, Red-black tree, AVL tree

purpplee 2021. 11. 30. 13:51

Balanced Tree(Balanced Tree)

์ด์ง„ ํŠธ๋ฆฌ๋Š” ์ž์‹์„ ์ตœ๋Œ€ ๋‘ ๊ฐœ๋งŒ ๊ฐ€์ง์œผ๋กœ์จ O(log N) ์˜ ํƒ์ƒ‰ ํšจ์œจ์„ ๋ณด์ธ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ขŒ์šฐ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๊ท ํ˜•์ด ๋งž์ง€ ์•Š์„ ๋•Œ๋Š” ์–ด๋Š ํ•œ ์ชฝ๋งŒ ํƒ์ƒ‰ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ O(N) ์ด๋ผ๋Š” ๋น„ํšจ์œจ์ ์ธ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ฃผ๋‹ˆ ์ขŒ์šฐ ๋ฐธ๋Ÿฐ์Šค๋ฅผ ๋งž์ถœ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ๋ฃจํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋…ธ๋“œ ๊ฐœ์ˆ˜๊ฐ€ ๊ท ํ˜•์ ์ด๋ฉด Balanced Tree ๋ผ๊ณ  ํ•œ๋‹ค. Blanced Tree ์—๋Š” B-tree, red-black treeAVL tree  ๋“ฑ์ด ์žˆ๋‹ค. 

 

์—ฌ๊ธฐ์„œ '๊ท ํ˜•์ด ์žกํ˜”๋‹ค' ๋ผ๋Š” ๋œป์€ ์–‘์ชฝ ๋…ธ๋“œ์˜ ์ž์‹ ๋…ธ๋“œ๊ฐ€ 2๊ฐœ ์ด์ƒ ์ฐจ์ด๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”, ์ฆ‰ ๋†’์ด ์ฐจ์ด๊ฐ€ 2 ์ด์ƒ ์ฐจ์ด๋‚˜์ง€ ์•Š๋Š” ์ƒํƒœ๋ฅผ ๋งํ•œ๋‹ค. (1๊ฐœ ๊นŒ์ง€๋Š” ๊ดœ์ฐฎ๋‹ค.) ๊ฐ™์€ ๋ ˆ๋ฒจ์— ๊ฝ‰ ์ฐจ ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ์™„์ „ ๊ท ํ˜•์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

B-tree

์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ํ™•์žฅํ•ด, ํ•˜๋‚˜์˜ ๋…ธ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํŠธ๋ฆฌ์ด๋‹ค. ๋…ธ๋“œ๊ฐ€ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ •ํ•ด์ง„๋‹ค. ํ•œ ๋…ธ๋“œ๊ฐ€ ์ตœ์†Œ n๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ B-tree ๋ฅผ n์ฐจ B-tree ๋ผ๊ณ  ํ•˜๋ฉฐ ํ™€์ˆ˜์ฐจ์ˆ˜๋ƒ ์ง์ˆ˜์ฐจ์ˆ˜๋ƒ์— ๋”ฐ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋‹ค๋ฅด๋‹ค. ์•„๋ž˜ ๊ทœ์น™์— ๋”ฐ๋ผ Balanced Tree ํ˜•ํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.

 

B-tree์˜ ๊ทœ์น™

  • ๋…ธ๋“œ์˜ ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๊ฐ€ n๊ฐœ๋ผ๋ฉด ์ž์‹ ๋…ธ๋“œ์˜ ์ˆ˜๋Š” n+1๊ฐœ๋‹ค.
  • ๊ฐ ๋…ธ๋“œ ์•ˆ์˜ ๋ฐ์ดํ„ฐ๋“ค์€ ์ •๋ ฌ๋œ ์ƒํƒœ์—ฌ์•ผ ํ•œ๋‹ค.
  • ๋ฐ์ดํ„ฐ์˜ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ณด๋‹ค ์ž‘์€ ๊ฐ’๋“ค์ด๊ณ , ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋Š” ํฐ ๊ฐ’๋“ค์ด๋‹ค.
  • ๋ฃจํŠธ ๋…ธ๋“œ๋Š” ์ ์–ด๋„ 2๊ฐœ ์ด์ƒ์˜ ์ž์‹์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. (์ž์‹ ๋…ธ๋“œ์˜ ์ˆ˜๊ฐ€ n+1๊ฐœ์—ฌ์•ผ ํ•˜๋‹ˆ๊นŒ)
  • n์ฐจ B-tree๋Š” ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ์ ์–ด๋„ n๊ฐœ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.
  • leaf ๋…ธ๋“œ๋Š” ๊ฐ™์€ ๋ ˆ๋ฒจ์— ์žˆ์–ด์•ผ ํ•œ๋‹ค. 
  • ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ์ค‘๋ณต๋  ์ˆ˜ ์—†๋‹ค.

 

AVL Tree

์Šค์Šค๋กœ ๊ท ํ˜•์„ ์žก๋Š” Self-Balancing ์ด ์ ์šฉ๋œ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋‹ค. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋ทธ๊ท ํ˜• ์ƒํƒœ์—์„œ๋Š” O(N)์ด๋ผ๋Š” ์„ฑ๋Šฅ์„ ๋„๋ฏ€๋กœ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€์ง€ ์•Š๊ฒŒ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๊ฒŒ ํ•œ ๊ฒƒ์ด๋‹ค. ์ฐธ๊ณ ๋กœ AVL ์€ ์ด ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“  ์‚ฌ๋žŒ๋“ค์˜ ์•ž ์ด๋ฆ„์„ ๋•„๋‹ค๊ณ  ํ•œ๋‹ค...

 

AVL ํŠธ๋ฆฌ์—์„œ๋Š” ๊ฐ ๋…ธ๋“œ๊ฐ€ Balance Factor(BF) ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. BF ๋Š” (์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋†’์ด - ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋†’์ด) ์ด๋‹ค. ๊ท ํ˜•์ด ์œ ์ง€๋˜๊ณ  ์žˆ๋‹ค๋ฉด BF ๋Š” -1, 0, 1์˜ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. ์ด ์ด์ƒ์ด ๋‚˜์˜ค๋ฉด ๊ท ํ˜•์ด ๊นจ์ง„ ๊ฒƒ์œผ๋กœ ๋ณด๊ณ  ๐Ÿ‘‰  ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ์ฒ˜๋Ÿผ rotation ์„ ํ•œ๋‹ค.

 

Red-Black Tree

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์Šค์Šค๋กœ ๊ท ํ˜•์„ ์žก๋Š” Self-Balancing ์ด ์ ์šฉ๋œ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋‹ค. AVL ํŠธ๋ฆฌ์™€ ๊ท ํ˜•์„ ์žก๋Š” ๊ทœ์น™์ด ๋‹ค๋ฅด๋‹ค. ๊ฐ ๋…ธ๋“œ์— Red or Black ์ƒ‰๊น”์„ ์ €์žฅํ•ด, ์ƒ‰๊น”์„ ๊ธฐ์ค€์œผ๋กœ ๊ท ํ˜•์„ ๋งž์ถ˜๋‹ค. ๊ท ํ˜•์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทœ์น™์œผ๋กœ ์œ ์ง€๋œ๋‹ค. ์•„๋ž˜ ๊ทœ์น™์„ ๋”ฐ๋ฅด๋ฉด ๋ฃจํŠธ๋ถ€ํ„ฐ ๋ฆฌํ”„๊นŒ์ง€ ๋ธ”๋ž™ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์•„์ง„๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ท ํ˜•์„ ์žก๊ธฐ ์œ„ํ•ด ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ์ฒ˜๋Ÿผ rotation ์„ ํ•œ๋‹ค.

๋” ์„ค๋ช…ํ•ด์ž๋ฉด, 2-3-4ํŠธ๋ฆฌ(3์ฐจ B-Tree์™€ ๋™์ผํ•œ ๊ตฌ์กฐ)๋ฅผ Balanced ํ•˜๊ฒŒ ์œ ์ง€ํ•œ ํŠธ๋ฆฌ์ด๋‹ค. ํ•œ ๋…ธ๋“œ๊ฐ€ ํ•œ ๋…ธ๋“œ ์•ˆ์— ๋“ค์–ด ์žˆ๋˜ 3 ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๊ฐ€์šด๋ฐ๋ฅผ ๊ฒ€์ •์ƒ‰, ์–‘ ์˜†์„ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๋‚˜๋ˆˆ ๊ฒƒ. 

 

Red-Black Tree ๊ทœ์น™

  • ๋ชจ๋“  ๋…ธ๋“œ๋Š” Red or Black ์ด๋‹ค.
  • ๋ฃจํŠธ์™€ ๋ชจ๋“  leaf ๋…ธ๋“œ๋Š” Black ์ด๋‹ค.
  • Red ๋…ธ๋“œ์˜ ์ž์‹ ๋…ธ๋“œ๋Š” ๋ชจ๋‘ Black ์ด๋‹ค. => No double red
  • ๊ฐ™์€ ๋ ˆ๋ฒจ์˜ ๋…ธ๋“œ๋“ค์€ ๋ฆฌํ”„๋…ธ๋“œ๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒฝ๋กœ์— ๊ฐ™์€ ์ˆ˜์˜ Black ๋…ธ๋“œ๋ฅผ ํฌํ•จํ•œ๋‹ค. => black height

 

AVL Tree vs Red-Black Tree

Red-Black Tree ๋Š” ์ƒ๋Œ€์ ์œผ๋กœ AVL Tree ๋ณด๋‹ค ๊ท ํ˜•์ด ๋Š์Šจํ•ด์„œ rotation์ด ๊ฑฐ์˜ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค. ๋•Œ๋ฌธ์— AVL ํŠธ๋ฆฌ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์‚ฝ์ž…/์‚ญ์ œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋˜ AVL ํŠธ๋ฆฌ๋Š” BF ๋ผ๋Š” int ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ์žก์•„๋จน๋Š”๋‹ค. Red-Black ํŠธ๋ฆฌ๋Š” 2๊ฐ€์ง€ ์ƒ‰์ƒ์ด๋ฏ€๋กœ bit ๊ฐ™์ด ๋‘ ๊ฐ€์ง€ ๊ฐ’๋งŒ ํ‘œํ˜„ํ•˜๋ฉด ๋œ๋‹ค. ์ด๋Ÿฐ ์ด์œ ๋“ค๋กœ Red Black Tree ๊ฐ€ ๋งŽ์ด ์“ฐ์ด๊ณ  ์žˆ๋‹ค.

๋ฐ˜์‘ํ˜•