AVL

AVL ํŠธ๋ฆฌ๋Š” Balanced Binary Search Tree์ด๋‹ค. AVL ํŠธ๋ฆฌ๋Š” ๊ฐ๊ฐ ๋…ธ๋“œ๋งˆ๋‹ค ์™ผ์ชฝ, ์˜ค๋ฅธ์กฑ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋†’์ด ์ฐจ์ด์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ๊ฐ€์ง€๊ณ  ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋†’์ด ์ฐจ์ด๊ฐ€ 1๋ณด๋‹ค ํฌ์ง€์•Š๋‹ค๋Š” ์„ฑ์งˆ์„ ๊ฐ€์ง„๋‹ค.(์œ„ํ‚คํ”ผ๋””์•„ )

์ฆ‰, ์–‘์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋†’์ด ์ฐจ์ด๊ฐ€ 1์ดํ•˜์ด๋‹ค.

๊ท ํ˜•์žกํžŒ AVL ํŠธ๋ฆฌ๋Š” n๊ฐœ์˜ ์›์†Œ๊ฐ€ ์žˆ์„ ๋•Œ O(logn)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

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

ํ‰๊ท 

์ตœ์•…์˜ ๊ฒฝ์šฐ

๊ณต๊ฐ„

O(n)

O(n)

๊ฒ€์ƒ‰

O(logn)

O(logn)

์‚ฝ์ž…

O(logn)

O(logn)

์‚ญ์ œ

O(logn)

O(logn)

Rotation

ํŠธ๋ฆฌ์˜ ์žฌ๊ตฌ์„ฑ ์ž‘์—…์„ Rotation(ํšŒ์ „)์ด๋ผ๊ณ  ํ•œ๋‹ค.

LL

         z                                      y 
        / \                                   /   \
       y   T4      Right Rotate (z)          x      z
      / \          - - - - - - - - ->      /  \    /  \ 
     x   T3                               T1  T2  T3  T4
    / \
  T1   T2

y๋Š” z์˜ ์™ผ์ชฝ ์ž์‹, x๋Š” y์˜ ์™ผ์ชฝ ์ž์‹์ด๋‹ค. ์ด๋•Œ T1, T2, T3, T4๋Š” ๊ฐ๊ฐ์˜ ์„œ๋ธŒํŠธ๋ฆฌ์ด๋‹ค.

z์˜ ์˜ค๋ฅธ์กฑ ์ž์‹๊ณผ ์™ผ์ชฝ ์ž์‹์ด ๋ถˆ๊ท ํ˜•ํ•˜๋ฏ€๋กœ right Rotation ํ•œ๋ฒˆ์œผ๋กœ ๊ท ํ˜•์„ ์žก์•„์ค„ ์ˆ˜ ์žˆ๋‹ค.

LR

y๋Š” z์˜ ์™ผ์ชฝ ์ž์‹, x๋Š” y์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹์ด๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ์—๋Š” ํšŒ์ „์„ ๋‘๋ฒˆ์‹œ์ผœ์ค˜์•ผํ•œ๋‹ค. ์šฐ์„  y๋ฅผ ์™ผ์ชฝ ํšŒ์ „์„ ํ•œ๋ฒˆ ์‹œ์ผœ์ฃผ๊ณ  z๋ฅผ ์˜ค๋ฅธ์ชฝ ํšŒ์ „์‹œ์ผœ์ฃผ๋ฉด ๊ท ํ˜•์ด ์žกํžˆ๊ฒŒ ๋œ๋‹ค.

RR

y๋Š” z์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹์ด๊ณ , x๋Š” y์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹์ด๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ๋Š” LL๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•œ๋ฒˆ์˜ rotation์œผ๋กœ ๊ท ํ˜•์„ ์žก์„ ์ˆ˜ ์žˆ๋‹ค.

RL

y๋Š” z์˜ ์˜ค๋ฅธ์ชฝ์ž์‹, x๋Š” y์˜ ์™ผ์ชฝ ์ž์‹์ด๋‹ค .์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ๋Š” ์œ„์˜ LR๊ณผ ์ • ๋ฐ˜๋Œ€์ธ ๊ฒฝ์šฐ์ด๋‹ค. ์ด ๋•Œ๋Š” ์˜ค๋ฅธ์ชฝ ํšŒ์ „ ํ›„ ์™ผ์ชฝ ํšŒ์ „์„ ํ•˜๋ฉด ๊ท ํ˜•์„ ๋งž์ถœ ์ˆ˜ ์žˆ๋‹ค.

๊ตฌํ˜„

height

Right Rotation

Left Rotation

balance

์‚ฝ์ž…

์œ„์˜ Rotation์„ ์ด์šฉํ•ด์„œ ์‚ฝ์ž…์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ์šฐ์„  BST์˜ ์‚ฝ์ž…๊ณผ ๊ฐ™์ด ์‚ฝ์ž…ํ•œ๋‹ค.

  2. ํ˜„์žฌ์˜ height๊ฐ’์„ updateํ•ด์ค€๋‹ค.

  3. balanceํ•œ์ง€ ํ™•์ธํ•œ๋‹ค.(-1๋ฏธ๋งŒ 1์ดˆ๊ณผ ๋ถˆ๊ท ํ˜•)

  4. ๋ถˆ๊ท ํ˜•ํ•˜๋‹ค๋ฉด LL, LR, RR, RL ์˜ ๊ฐ๊ฐ์˜ ๊ฒฝ์šฐ์— ๋งž๊ฒŒ rotationํ•ด์ค€๋‹ค.

์‚ญ์ œ

  1. ์šฐ์„  BST์˜ ์‚ญ์ œ์™€ ๊ฐ™์ด ์‚ญ์ œํ•˜๋‹ค.

  2. ํ˜„์žฌ ๋…ธ๋“œ๋Š” ๋ฐ˜๋“œ์‹œ ์‚ญ์ œ๋…ธ๋“œ์˜ ์กฐ์ƒ๋…ธ๋“œ ์ค‘ ํ•˜๋‚˜์—ฌ์•ผํ•œ๋‹ค.

  3. ํ˜„์žฌ์˜ height๊ฐ’์„ updateํ•ด์ค€๋‹ค.

  4. balanceํ•œ์ง€ ํ™•์ธํ•œ๋‹ค.(-1๋ฏธ๋งŒ 1์ดˆ๊ณผ ๋ถˆ๊ท ํ˜•)

  5. ๋ถˆ๊ท ํ˜•ํ•˜๋‹ค๋ฉด LL, LR, RR, RL ์˜ ๊ฐ๊ฐ์˜ ๊ฒฝ์šฐ์— ๋งž๊ฒŒ rotationํ•ด์ค€๋‹ค.

Last updated