AVL Tree
์ด๋ค ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋๋ผ๋ ์ผ์ชฝ์์์ ๊น์ด์ ์ค๋ฅธ์ชฝ ์์์ ๊น์ด ์ฐจ์ด๊ฐ 1์ ๋์ง ์๋ ํธ๋ฆฌ
BST (์ด์ง ํ์ ํธ๋ฆฌ)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ Tree.
์ฝ์ , ์ญ์ , ํ์์ ์๊ฐ๋ณต์ก๋๋ O(log n)
์ฉ์ด ๊ฐ๋
๊ท ํ์น (Balance factor) : ์์๋ ธ๋์ ๊น์ด ์ฐจ์ด ( ์ผ์ชฝ ์๋ธํธ๋ฆฌ์ ๋์ด โ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์ ๋์ด ) BF๋ -1, 0, 1๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ ์ด ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ค๋ฉด, ๊ทธ ํธ๋ฆฌ์ ๊ท ํ์ ๊นจ์ง๊ฒ๋ค.
ํน์ง
BST
์ ๋ชจ๋ ํน์ง์ ๊ฐ๋๋ค.๋ชจ๋ ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ์์์ ๊น์ด์ ์ค๋ฅธ์ชฝ ์์์ ๊น์ด ์ฐจ์ด๊ฐ 1์ ๋์ง ์๋๋ค.
AVL Tree๊ฐ Red Black Tree๋ณด๋ค ๋ ์๊ฒฉํ๊ธฐ ๋๋ฌธ์
๋ ๋น ๋ฅธ ์กฐํ
๊ฐ ๊ฐ๋ฅํ๋์ฝ์ / ์ญ์
๊ฐ RB Tree์ ๋นํด๋๋ฆฌ๋ค
.RB Tree
๋ Red/Black์ ํํํ ๋1 or 0
1๋นํธ๋ง ์์ด๋ ๋๋AVL Tree
๋ ๊น์ด๋ฅผ ์ ์ฅํint
ํ์ ์ ์ ์ฅ์ด ํ์ํ๋ค.
์ฌ์ฉ ์
๋ ๋น ๋ฅธ ๊ฒ์์ด ํ์ํ DB์ ์ฌ์ฉ
๊ตฌํ
Insert ( ์ฝ์ )
BST์ ์ผ๋ฐ ์ฝ์
๊ท์น์ ๋ง๊ฒ ์ฝ์
ํ, ์ฒซ๋ฒ์งธ๋ก ๋ถ๊ท ํํ ๋
ธ๋๋ฅผ ์ฐพ๋๋ค.
์ด๋ ๋ถ๊ท ํํ ๋
ธ๋๋ฅผ z๋ผ๊ณ ํ ๋, ์์๋
ธ๋๊ฐ y, ์์ ๋
ธ๋๋ฅผ x๋ผ ํ๋ค.
ํด๋นํ๋ case์ ๋ฐ๋ผ z๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ถ๋ถํธ๋ฆฌ๋ฅผ ํ์ ์ ํตํด ์ฌ๋ฐฐ์ด ์์ผ์ค๋ค.(rotation , restructuring)
๐ด case 1. y๋ z์ ์ผ์ชฝ ์์, x๋ y์ ์ผ์ชฝ ์์ ( left left )
โก z๋ฅผ ๊ธฐ์ค์ผ๋ก right-rotate ์์ผ์ค๋ค.
๐ด case 2. y๋ z์ ์ผ์ชฝ ์์, x๋ y์ ์ค๋ฅธ์ชฝ ์์ ( left right )
โก y๋ฅผ ๊ธฐ์ค์ผ๋ก left-rotate ์์ผ์ค ํ, z๋ฅผ ๊ธฐ์ค์ผ๋ก right-rotate ์์ผ์ค๋ค.
๐ด case 3. y๋ z์ ์ค๋ฅธ์ชฝ ์์, x๋ y์ ์ค๋ฅธ์ชฝ ์์ ( right right )
โก z๋ฅผ ๊ธฐ์ค์ผ๋ก left-rotate ์์ผ์ค๋ค.
๐ด case 4. y๋ z์ ์ค๋ฅธ์ชฝ ์์, x๋ y์ ์ผ์ชฝ ์์ ( right left )
โก y๋ฅผ ๊ธฐ์ค์ผ๋ก right-rotate ์์ผ์ค ํ, z๋ฅผ ๊ธฐ์ค์ผ๋ก left-rotate ์์ผ์ค๋ค.
Delete ( ์ญ์ )
BST์ ์ผ๋ฐ ์ฝ์
๊ท์น์ ๋ง๊ฒ ์ญ์ ํ, ์ฒซ๋ฒ์งธ๋ก ๋ถ๊ท ํํ ๋
ธ๋๋ฅผ ์ฐพ๋๋ค.
์ด๋ ๋ถ๊ท ํํ ๋
ธ๋๋ฅผ z๋ผ๊ณ ํ ๋, z์ ์์๋
ธ๋์ค ๊น์ด๊ฐ ํฐ ์์ ๋
ธ๋๋ฅผ y, y์ ์์๋
ธ๋์ค ๊น์ด๊ฐ ํฐ ์์ ๋
ธ๋๋ฅผ x๋ผ ํ์.
ํด๋นํ๋ case์ ๋ฐ๋ผ z๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ถ๋ถํธ๋ฆฌ๋ฅผ ํ์ ์ ํตํด ์ฌ๋ฐฐ์ด ์์ผ์ค๋ค.(rotation , restructuring)
์ฌ๋ฐฐ์ด ๊ณผ์ ์ ์ฝ์
๊ณผ ๋์ผํ๋ค.
๐ด case 1. y๋ z์ ์ผ์ชฝ ์์, x๋ y์ ์ผ์ชฝ ์์ ( left left )
โก z๋ฅผ ๊ธฐ์ค์ผ๋ก right-rotate ์์ผ์ค๋ค.
๐ด case 2. y๋ z์ ์ผ์ชฝ ์์, x๋ y์ ์ค๋ฅธ์ชฝ ์์ ( left right )
โก y๋ฅผ ๊ธฐ์ค์ผ๋ก left-rotate ์์ผ์ค ํ, z๋ฅผ ๊ธฐ์ค์ผ๋ก right-rotate ์์ผ์ค๋ค.
๐ด case 3. y๋ z์ ์ค๋ฅธ์ชฝ ์์, x๋ y์ ์ค๋ฅธ์ชฝ ์์ ( right right )
โก z๋ฅผ ๊ธฐ์ค์ผ๋ก left-rotate ์์ผ์ค๋ค.
๐ด case 4. y๋ z์ ์ค๋ฅธ์ชฝ ์์, x๋ y์ ์ผ์ชฝ ์์ ( right left )
โก y๋ฅผ ๊ธฐ์ค์ผ๋ก right-rotate ์์ผ์ค ํ, z๋ฅผ ๊ธฐ์ค์ผ๋ก left-rotate ์์ผ์ค๋ค.
Search ( ํ์ )
AVL Tree๋ BST์ ์ผ์ข
์ด๊ธฐ ๋๋ฌธ์ ํ์์ ๋ฐฅ๋ฒ์ ์ผ๋ฐ์ ์ธ Bianry Tree์ ํ์ ๋ฐฉ๋ฒ๊ณผ ๋ค๋ฅด์ง ์๋ค.
์๊ฐ ๋ณต์ก๋
์ผ๋ฐ BST์ skewdํ ๊ฒฝ์ฐ๋ฅผ balancing๊ธฐ๋ฒ์ ํตํด balancedํ tree๋ฅผ ๋ง๋ค์์ผ๋ฏ๋ก ํ์๊ณผ์ ์ ์ํ๋ ๋๋ก O(lgn)์ด ๋์จ๋ค. ์ฝ์ ์ ์ผ๋ฐ BST์์ rotate๊ณผ์ ์ด ์ถ๊ฐ ๋์๋ ๋ฐ, rotate๊ณผ์ ์ ํฌ์ธํฐ๋ณ์๋ฅผ ๊ตํํด์ฃผ๋ ๊ฒ์ด๋ฏ๋ก O(1)์ ์ฐ์ฐ์ด O(lgn)๋ฒ ์ํ ๋๋ฏ๋ก ์ฝ์ ๋ O(lgn)์ ๊ฐ๋๋ค. ์ญ์ ๋ ์ฝ์ ๊ณผ ๋์ผํ ํ๋ก์ธ์ค๋ก ๋์ํ๋ฏ๋ก O(lgn)์ด ๋์จ๋ค.
Last updated