AVL Tree

AVL ํŠธ๋ฆฌ๋Š” ์Šค์Šค๋กœ ๊ท ํ˜•์„ ์žก๋Š” ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค.

ํŠธ๋ฆฌ์˜ ๋†’์ด๊ฐ€ h์ผ ๋•Œ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(h)์ž…๋‹ˆ๋‹ค. ํ•œ์ชฝ์œผ๋กœ ์น˜์šฐ์นœ ํŽธํ–ฅ ์ด์ง„ํŠธ๋ฆฌ๊ฐ€ ๋˜๋ฉด ํŠธ๋ฆฌ์˜ ๋†’์ด๊ฐ€ ๋†’์•„์ง€๊ธฐ ๋•Œ๋ฌธ์—, ๋†’์ด ๊ท ํ˜•์„ ์œ ์ง€ํ•˜๋Š” AVL ํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

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

Balance Factor(BF)

Balance Factor(BF)๋Š” ์™ธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋†’์ด์—์„œ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋†’์ด๋ฅผ ๋บ€ ๊ฐ’์ž…๋‹ˆ๋‹ค.

Balance Factor (k) = height (left(k)) - height(right(k))

BF๊ฐ€ 1์ด๋ฉด ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๊ฐ€ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ณด๋‹ค ๋†’์ด๊ฐ€ ํ•œ๋‹จ๊ณ„ ๋†’๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
BF๊ฐ€ 0์ด๋ฉด ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์™€ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋†’์ด๊ฐ€ ๊ฐ™๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
BF๊ฐ€ -1์ด๋ฉด ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๊ฐ€ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋ณด๋‹ค ๋†’์ด๊ฐ€ ํ•œ๋‹จ๊ณ„ ๋‚ฎ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Rotation

AVLํŠธ๋ฆฌ๋Š” ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ž‘์—…์€ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰ ๋ฐ ์ˆœํšŒ ์—ฐ์‚ฐ์€ BF๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์ง€๋งŒ ์‚ฝ์ž… ๋ฐ ์‚ญ์ œ์—์„œ๋Š” BF๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฝ์ž… ์‚ญ์ œ ์‹œ ๋ถˆ๊ท ํ˜• ์ƒํƒœ(BF๊ฐ€ -1 ,0, 1์ด ์•„๋‹Œ ๊ฒฝ์šฐ) ๊ฐ€ ๋˜๋ฉด AVLํŠธ๋ฆฌ๋Š” ๋ถˆ๊ท ํ˜• ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” rotation ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์„ ๋งž์ถ”๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์‚ฝ์ž… ์‚ญ์ œ์‹œ ๋…ธ๋“œ๋“ค์˜ ๋ฐฐ์—ด์— ๋”ฐ๋ผ 4๊ฐ€์ง€(LL, RR, LR, RL) ๋ถˆ๊ท ํ˜•์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐ ์ƒํ™ฉ๋งˆ๋‹ค rotation์— ๋ฐฉํ–ฅ์„ ๋‹ฌ๋ฆฌํ•˜์—ฌ ํŠธ๋ฆฌ์˜ ๊ท ํ˜•์„ ๋งž์ถฅ๋‹ˆ๋‹ค.

Last updated