AVL Tree
Last updated
Last updated
AVL ํธ๋ฆฌ๋ ์ค์ค๋ก ๊ท ํ์ ์ก๋ ์ด์ง ํ์ ํธ๋ฆฌ์ ๋๋ค.
ํธ๋ฆฌ์ ๋์ด๊ฐ h์ผ ๋ ์ด์ง ํ์ ํธ๋ฆฌ์ ์๊ฐ ๋ณต์ก๋๋ O(h)์ ๋๋ค. ํ์ชฝ์ผ๋ก ์น์ฐ์น ํธํฅ ์ด์งํธ๋ฆฌ๊ฐ ๋๋ฉด ํธ๋ฆฌ์ ๋์ด๊ฐ ๋์์ง๊ธฐ ๋๋ฌธ์, ๋์ด ๊ท ํ์ ์ ์งํ๋ AVL ํธ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
Balance Factor(BF)๋ ์ธ์ชฝ ์๋ธํธ๋ฆฌ์ ๋์ด์์ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์ ๋์ด๋ฅผ ๋บ ๊ฐ์ ๋๋ค.
Balance Factor (k) = height (left(k)) - height(right(k))
AVLํธ๋ฆฌ๋ ์ด์ง ํ์ ํธ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์์ ์ ์ด์ง ํ์ ํธ๋ฆฌ์์ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ์ํ๋ฉ๋๋ค. ๊ฒ์ ๋ฐ ์ํ ์ฐ์ฐ์ BF๋ฅผ ๋ณ๊ฒฝํ์ง ์์ง๋ง ์ฝ์ ๋ฐ ์ญ์ ์์๋ BF๊ฐ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
์ฝ์ ์ญ์ ์ ๋ถ๊ท ํ ์ํ(BF๊ฐ -1 ,0, 1์ด ์๋ ๊ฒฝ์ฐ) ๊ฐ ๋๋ฉด AVLํธ๋ฆฌ๋ ๋ถ๊ท ํ ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ธํธ๋ฆฌ์ ์์น๋ฅผ ๋ณ๊ฒฝํ๋ rotation ์์ ์ ์ํํ์ฌ ํธ๋ฆฌ์ ๊ท ํ์ ๋ง์ถ๊ฒ ๋ฉ๋๋ค.
์ฝ์ ์ญ์ ์ ๋ ธ๋๋ค์ ๋ฐฐ์ด์ ๋ฐ๋ผ 4๊ฐ์ง(LL, RR, LR, RL) ๋ถ๊ท ํ์ด ๋ฐ์ํ ์ ์์ผ๋ฉฐ ๊ฐ ์ํฉ๋ง๋ค rotation์ ๋ฐฉํฅ์ ๋ฌ๋ฆฌํ์ฌ ํธ๋ฆฌ์ ๊ท ํ์ ๋ง์ถฅ๋๋ค.