๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–‹๏ธ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜/์•Œ๊ณ ๋ฆฌ์ฆ˜,์ž๋ฃŒ๊ตฌ์กฐ

[ํŠธ๋ฆฌ] ๊ท ํ˜• ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ (AVLํŠธ๋ฆฌ, ๋ ˆ๋“œ-๋ธ”๋ž™ํŠธ๋ฆฌ, B-ํŠธ๋ฆฌ)

by OR15A 2023. 11. 27.
  • ๊ท ํ˜• ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ
    • ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋„ ์ด์ง„ ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์ด ์ž˜ ๋งž๋„๋ก ์œ ์ง€ํ•ด์„œ ์ž‘์—…๋“ค์ด ํ•ญ์ƒ O(logn)์‹œ๊ฐ„์„ ๋ณด์žฅํ•จ

 

AVL ํŠธ๋ฆฌ

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

AVLํŠธ๋ฆฌ ์šด์˜

  • ์‚ฝ์ž…๊ณผ ์‚ญ์ œ
    • ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•  ๋•Œ, AVL ํŠธ๋ฆฌ๋Š” ๋ถˆ๊ท ํ˜•๋„๋ฅผ ์ฒดํฌํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ํšŒ์ „์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ท ํ˜•์„ ์žฌ์กฐ์ •
  • ๋ถˆ๊ท ํ˜•๋„ ์ฒดํฌ
    • ๊ฐ ๋…ธ๋“œ๋Š” ์ž์‹ ์˜ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ์ž์‹ ํŠธ๋ฆฌ์˜ ๋†’์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ถˆ๊ท ํ˜•๋„๋ฅผ ๊ณ„์‚ฐ. ๋ถˆ๊ท ํ˜•๋„๊ฐ€ 1์„ ์ดˆ๊ณผํ•˜๋ฉด ๊ท ํ˜•์ด ๊นจ์ง„ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ
  • ํšŒ์ „ ์œ ํ˜•
    • ๊ท ํ˜•์ด ๊นจ์ง„ ๊ฒฝ์šฐ, LL, RR, LR, RL ๋„ค ๊ฐ€์ง€ ์œ ํ˜•์˜ ๋ถˆ๊ท ํ˜• ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ํšŒ์ „์„ ์ ์šฉ

 

 

 

๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ

  • ๋ ˆ๋“œ์™€ ๋ธ”๋ž™ ๋‘ ์ƒ‰์„ ์‚ฌ์šฉํ•ด์„œ ๊ท ํ˜•์„ ๋งž์ถค
  • ์ž์‹์ด ์—†์œผ๋ฉด ํ•ด๋‹น ๋งํฌ๋ฅผ null๊ฐ’์œผ๋กœ ๋‘๊ณ , ์ด  null ๊ฐ๊ฐ์„ ๋ฆฌํ”„ ๋…ธ๋“œ๋กœ ๊ฐ„์ฃผํ•จ
  • RBํŠน์„ฑ
    • ๋ฃจํŠธ๋Š” ๋ธ”๋ž™
    • ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ๋Š” ๋ธ”๋ž™
    • ๋ ˆ๋“œ ๋…ธ๋“œ 2๊ฐœ๊ฐ€ ์—ฐ์†์œผ๋กœ ์ถœ์—ฐํ•  ์ˆ˜ ์—†์Œ
    • ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ ์ž„์˜์˜ ๋ฆฌํ”„ ๋…ธ๋“œ์— ์ด๋ฅด๋Š” ๊ฒฝ๋กœ์—์„œ ๋งŒ๋‚˜๋Š” ๋ธ”๋ž™ ๋…ธ๋“œ์˜ ์ˆ˜๋Š” ๊ฐ’์Œ
    • ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ์˜ ์ˆ˜๋Š” ๋ชจ๋‘ ๊ฐ™์Œ

๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ์˜ ์šด์˜

  • ์‚ฝ์ž…๊ณผ ์‚ญ์ œ
    • ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•  ๋•Œ, ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ๋Š” ์ƒ‰์ƒ ๊ทœ์น™์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํŠธ๋ฆฌ๋ฅผ ์žฌ์กฐ์ •(์ด ๊ณผ์ •์—์„œ ์ƒ‰์ƒ ๋ณ€๊ฒฝ๊ณผ ํšŒ์ „์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์Œ)
  • ํšŒ์ „ ์—ฐ์‚ฐ
    • ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋‹จ์ผ ํšŒ์ „(Single Rotation)๊ณผ ์ด์ค‘ ํšŒ์ „(Double Rotation)์„ ์‚ฌ์šฉ
  • ์ƒ‰์ƒ ๋ณ€๊ฒฝ
    • ์‚ฝ์ž…์ด๋‚˜ ์‚ญ์ œ ๊ณผ์ •์—์„œ ๋…ธ๋“œ์˜ ์ƒ‰์ƒ์„ ๋ณ€๊ฒฝํ•˜์—ฌ ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์„ ์žฌ์กฐ์ •

 

AVLํŠธ๋ฆฌ์™€ RBํŠธ๋ฆฌ์˜ ๊ท ํ˜• ์กฐ์ • ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ฐจ์ด

AVL ํŠธ๋ฆฌ
๊ท ํ˜• ์žฌ์กฐ์ •: ํšŒ์ „(๋‹จ์ผ, ์ด์ค‘)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋†’์ด ๊ท ํ˜• ์œ ์ง€

๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ
๊ท ํ˜• ์žฌ์กฐ์ •: ์ƒ‰์ƒ ๋ณ€๊ฒฝ๊ณผ ํšŒ์ „์„ ํ†ตํ•ด ๊ท ํ˜• ์œ ์ง€

 

 

 

B-ํŠธ๋ฆฌ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์ด ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ํšจ์œจ์ ์ธ ๊ท ํ˜• ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ์ผ์ข…
  • ๋ฉ€ํ‹ฐ-์›จ์ด ํŠธ๋ฆฌ
    • B-ํŠธ๋ฆฌ๋Š” ์ด์ง„์ด ์•„๋‹Œ ๋ฉ€ํ‹ฐ-์›จ์ด(๋‹ค์ค‘ ๊ฒฝ๋กœ) ํŠธ๋ฆฌ
    • ๊ฐ ๋…ธ๋“œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ํŠธ๋ฆฌ์˜ ๊นŠ์ด๋ฅผ ์ค„์ด๋Š” ๋ฐ ๋„์›€์„ ์คŒ
  • ๊ท ํ˜• ์œ ์ง€
    • ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ๋Š” ๊ฐ™์€ ๋ ˆ๋ฒจ์— ์žˆ์Œ
  • ๋…ธ๋“œ ๋‚ด ๋ฐ์ดํ„ฐ ์ •๋ ฌ
    • ๊ฐ ๋…ธ๋“œ๋Š” ํ‚ค(key)์˜ ๋ฐฐ์—ด๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ์ด ํ‚ค๋“ค์€ ์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ ์œ ์ง€๋จ
  • ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ์ตœ์ ํ™”
    • B-ํŠธ๋ฆฌ๋Š” ๋””์Šคํฌ ์ž…์ถœ๋ ฅ๊ณผ ๊ฐ™์€ ๋น„์šฉ์ด ๋†’์€ ์ž‘์—…์˜ ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Œ

B-ํŠธ๋ฆฌ์˜ ์šด์˜

  • ๋…ธ๋“œ ๊ตฌ์กฐ
    • ๊ฐ ๋…ธ๋“œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ‚ค๋ฅผ ํฌํ•จํ•˜๊ณ , ๊ฐ ํ‚ค ์‚ฌ์ด์— ์ž์‹ ๋…ธ๋“œ์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง
  • ์‚ฝ์ž…๊ณผ ์‚ญ์ œ
    • ์‚ฝ์ž… ๋˜๋Š” ์‚ญ์ œ ์‹œ์— ํŠธ๋ฆฌ๋Š” ์ž๋™์œผ๋กœ ์žฌ๊ตฌ์„ฑ๋˜์–ด ๊ท ํ˜•์„ ์œ ์ง€ํ•จ.
    • ์ข…์ข… ๋…ธ๋“œ์˜ ๋ถ„ํ• (splitting) ๋˜๋Š” ๋ณ‘ํ•ฉ(merging)์„ ํฌํ•จํ•จ
  • ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์™€ ์–ธ๋”ํ”Œ๋กœ์šฐ ์ฒ˜๋ฆฌ
    • ๋…ธ๋“œ์— ๋„ˆ๋ฌด ๋งŽ์€ ํ‚ค๊ฐ€ ์‚ฝ์ž…๋˜์–ด ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ๋…ธ๋“œ๋Š” ๋‘ ๊ฐœ์˜ ๋…ธ๋“œ๋กœ ๋ถ„ํ• ๋จ
    • ๋ฐ˜๋Œ€๋กœ ๋„ˆ๋ฌด ์ ์€ ํ‚ค๋กœ ์ธํ•ด ์–ธ๋”ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ๋…ธ๋“œ๋Š” ์ธ์ ‘ํ•œ ๋…ธ๋“œ์™€ ๋ณ‘ํ•ฉ๋  ์ˆ˜ ์žˆ์Œ

 

 

 

 


AVL ํŠธ๋ฆฌ
๊ท ํ˜• ์กฐ๊ฑด: ๋…ธ๋“œ์˜ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๊ฐ„ ๋†’์ด ์ฐจ์ด ์ตœ๋Œ€ 1.
๊ท ํ˜• ์žฌ์กฐ์ •: ํšŒ์ „(๋‹จ์ผ, ์ด์ค‘)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋†’์ด ๊ท ํ˜• ์œ ์ง€.
์ ์šฉ: ํƒ์ƒ‰ ์ค‘์‹ฌ, ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ๋ฐ์ดํ„ฐ์— ์ ํ•ฉ.

๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ
๊ท ํ˜• ์กฐ๊ฑด: ํŠน์ • ์ƒ‰์ƒ ๊ทœ์น™์— ๋”ฐ๋ผ ๋…ธ๋“œ ์ƒ‰์ƒ ๊ด€๋ฆฌ.
๊ท ํ˜• ์žฌ์กฐ์ •: ์ƒ‰์ƒ ๋ณ€๊ฒฝ๊ณผ ํšŒ์ „์„ ํ†ตํ•ด ๊ท ํ˜• ์œ ์ง€.
์ ์šฉ: ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ ํ•ฉ.

B-ํŠธ๋ฆฌ
๊ท ํ˜• ์กฐ๊ฑด: ๊ฐ ๋…ธ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ํ‚ค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ๋Š” ๊ฐ™์€ ๋ ˆ๋ฒจ์— ์œ„์น˜.
๊ท ํ˜• ์žฌ์กฐ์ •: ๋…ธ๋“œ ๋ถ„ํ•  ๋ฐ ๋ณ‘ํ•ฉ์„ ํ†ตํ•œ ๊ท ํ˜• ์œ ์ง€.
์ ์šฉ: ๋Œ€๊ทœ๋ชจ, ๋””์Šคํฌ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ์…‹์— ์ตœ์ ํ™”.

 

 

 

์ฐธ๊ณ ์ž๋ฃŒ : ใ€Œ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ with ์ž๋ฐ”ใ€