์๋ ํ์ธ์ Foma ๐ป ์ ๋๋ค!
์ค๋์ ์ ๋ฒ์ ์ ๋ฆฌํ๋ ์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ๋ ์ ๊ทธ๋ ์ด๋(?)ํ ์๋ฃ๊ตฌ์กฐ์ธ AVL ํธ๋ฆฌ์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
(ํน์ ์ด์ง ํ์ ํธ๋ฆฌ์ ๋ํด ๋ชจ๋ฅด์๋ ๋ถ๋ค์ ์ฌ๊ธฐ ์์ ๋ณด๊ณ ์์ฃผ์ธ์!)
๋ฐ๋ก ์์ํ ๊ฒ์~
AVL(Adelson-Velsky and Landis) ํธ๋ฆฌ๋? ๐ค
์ปดํจํฐ ๊ณผํ์์ AVL ํธ๋ฆฌ(๋ฐ๋ช ์์ ์ด๋ฆ์ธ Adelson-Velsky and Landis์์ ๋ฐ์จ ์ด๋ฆ)๋ ์ค์ค๋ก ๊ท ํ์ ์ก๋ ์ด์ง ํ์ ํธ๋ฆฌ์ด๋ค.
์ค์ค๋ก ๊ท ํ์ ์ก๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค ์ฒ์์ผ๋ก ๋ฐ๋ช ๋์๋ค. AVL ํธ๋ฆฌ์์, ๋ ์์ ์๋ธํธ๋ฆฌ์ ๋์ด๋ ํญ์ ์ต๋ 1๋งํผ ์ฐจ์ด๋๋ค. ๋ง์ฝ ์ด๋ค ์์ ์์ ๋์ด ์ฐจ์ด๊ฐ 1๋ณด๋ค ์ปค์ง๋ฉด ์ด ์์ฑ์ ์ ์งํ๊ธฐ ์ํด์ ์ค์ค๋ก ๊ท ํ์ ์ก๋๋ค. - ์ํค ๋ฐฑ๊ณผ -
์ฆ, ํ ๋ง๋๋ก ์ค์ค๋ก ๊ท ํ์ ์ก๋ ์ด์ง ํ์ ํธ๋ฆฌ๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค.
"AVL ํธ๋ฆฌ๊ฐ ์ ํ์ํ์ง?"
์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ๋ง๋ค ๋ ์๋์ ๊ฐ์ด ํ ์ชฝ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ ๋ฆฐ ๊ฒฝ์ฐ ๋ฑ ๋ด๋ ๊ท ํ์ด ์ผ์ชฝ์ผ๋ก ์น์ฐ์ณ์ ธ ์์ฃ ?
์ด๋ฐ ๊ฒฝ์ฐ์ ์ด์ง ํ์ ํธ๋ฆฌ๋ฅผ ํ์ํ ๋ O(n)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค.
์ด๋ ๊ฒ ๋นํจ์จ์ ์ผ๋ก ์ด์ง ํ์ ํธ๋ฆฌ๊ฐ ๊ตฌ์ฑ๋๋ ๊ฒ์ ๋ง๊ธฐ ์ํด ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ ๋ ๊ท ํ์ ์ก์์ฃผ๋ ๊ฒ์ด์ฃ .
์ด๊ฒ์ด ๋ฐ๋ก AVLํธ๋ฆฌ๊ฐ ํ์ํ ์ด์ ์ด๊ณ ๊ท ํ์ ์ก์์ค์ผ๋ก์จ ํ์ํ ๋ O(logn)์ ๊ฐ๊น๊ฒ ๋ง๋ค์ด ์ฃผ๋ ๊ฒ์ด์ฃ !
Balance Factor
๊ทธ๋ ๋ค๋ฉด ์ด์ง ํ์ ํธ๋ฆฌ์ ๊ท ํ์ ์ด๋ค ์์ผ๋ก ์ก๋ ๊ฒ์ผ๊น์?
๊ท ํ์ ์ก์ ๋ ํต์ฌ๋๋ ๊ฒ์ ๋ฐ๋ก Balance Factor๋ผ๋ ๊ฒ์ธ๋ฐ์.
Balance Factor๋ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ ์์์ ๋์ด ์ฐจ์ด๋ฅผ ๋ปํฉ๋๋ค.
Balance Factor๋ฅผ ํธ๋ฆฌ์ ํํํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
(์ผ์ชฝ ์์์ ๋์ด - ์ค๋ฅธ์ชฝ ์์์ ๋์ด๋ฅผ ๋นผ์ ๊ณ์ฐํ์ต๋๋ค.)
๊ทธ๋ฌ๋ฉด BF๊ฐ -2๋ถํฐ 2๊น์ง ์กด์ฌํ์ฃ ?
์ด ๋ ๊ท ํ์ด ์กํ๋ค๋ ๊ฒ์ BF๊ฐ ์ต๋ 1๊น์ง ์ฐจ์ด๋๋ ๊ฒ, ์ฆ -1๋ถํฐ 1๊น์ง์ผ ๋๋ฅผ ์๋ฏธํฉ๋๋ค.
๊ณ ๋ก 2๋ -2๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ ๋ถ๊ท ํํ๋ค๋ ๊ฒ์ด์ฃ .
ํ์ (๊ท ํ ์ก๊ธฐ)
๋ถ๊ท ํํ ํธ๋ฆฌ๋ฅด ๋ฐ๋ก์ก๊ธฐ ์ํด์ ํ์ ์ด ํ์ํฉ๋๋ค.
์ผ์ชฝ์ผ๋ก ๋๋ฆฌ๋ ํ์ (L), ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ๋๋ฆฌ๋ ํ์ (LR), ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ(RL)์ผ๋ก ๋๋ฆฌ๋ ํ์ , ์ค๋ฅธ์ชฝ(R)์ผ๋ก ๋๋ฆฌ๋ ํ์ ์ด๋ ๊ฒ 4๊ฐ์ง๊ฐ ์์ต๋๋ค.
7 4 3 2 5 8 10 11 9 ์์ผ๋ก ์ฝ์ ๋๋ค๊ณ ๊ฐ์ ํ๊ณ ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค.
๊ฐ์ฅ ๋จผ์ 7์ด ์ฝ์ ๋๊ฒ ์ฃ ?
4๊ฐ ์ฝ์ ๋๋ ์๊ฐ 7์ ์ผ์ชฝ ์์์ด ๋์ด๊ฐ 1์ด๋ฏ๋ก BF๋ 1์ด ๋ฉ๋๋ค.
3์ด ์ฝ์ ๋๋ ์๊ฐ 7์ ์ผ์ชฝ ์์ ๋์ด๊ฐ 2๊ฐ ๋๋ฏ๋ก BF๊ฐ 2๊ฐ ๋ฉ๋๋ค.
๊ณ ๋ก ๋ถ๊ท ํํ ํธ๋ฆฌ๊ฐ ๋๋ ๊ฒ์ด์ฃ .
์ด๊ฒ์ ๋ฐ๋ก ์ก๊ธฐ ์ํด์ ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
์ผ์ชฝ์ผ๋ก ์น์ฐ์ณ์ ธ ์๋ ํธ๋ฆฌ์ด๋ฏ๋ก ์ค๋ฅธ์ชฝ์ผ๋ก ํ์ ์ ํด์ ๊ท ํ์ ์ก์์ฃผ์ด์ผ ํ ๊ฒ์ ๋๋ค.
ํ์ ์ ํด์ฃผ๋ ๋ฐฉ๋ฒ์ ๋ถ๊ท ํ์ด ์์๋ ๋ ธ๋๋ถํฐ ๋์ ์์ ์ค ์ค๊ฐ๊ฐ์ ์์๋ ๋ ธ๋๋ก ๋์ฒดํ๊ณ ๊ฐ์ ๋ฐ๋ผ ์์์ ๋ฐฐ์นํฉ๋๋ค.
2๊ฐ ์ฝ์ ๋๋ฉด ์๋์ ๊ฐ์ด ๊ตฌ์ฑ๋ ๊ฒ์ ๋๋ค.
5๊ฐ ์ฝ์ ๋๋ฉด ์๋์ ๊ฐ์ด ๊ตฌ์ฑ๋ ๊ฒ์ ๋๋ค.
8์ด ์ฝ์ ๋๋ฉด ์๋์ ๊ฐ์ด ๊ตฌ์ฑ๋ ๊ฒ์ ๋๋ค.
10์ด ์ฝ์ ๋๋ฉด ์๋์ ๊ฐ์ด ๊ตฌ์ฑ๋ ๊ฒ์ ๋๋ค.
11์ด ์ฝ์ ๋๋ ์๊ฐ BF๊ฐ -2๊ฐ ๋๋ฉฐ ๊ท ํ์ด ๊นจ์ง๊ฒ ๋ฉ๋๋ค.
์ด ๋๋ ์ค๋ฅธ์ชฝ์ ์์์ด ์น์ฐ์ณ์ ธ ์์ผ๋ฏ๋ก ์ผ์ชฝ์ผ๋ก ํ์ ์ ํด์ค์ผ๊ฒ ์ฃ ?
ํ์ ์ ํ๋ฉด ์๋์ ๊ฐ์ด ํธ๋ฆฌ๊ฐ ๊ตฌ์ฑ๋ฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก 9๋ฅผ ์ฝ์ ํ๋ฉด ์๋์ ๊ฐ์ด ํธ๋ฆฌ๊ฐ ๊ตฌ์ฑ๋ ๊ฒ์ ๋๋ค.
์ด ๋๋ ์กฐ๊ธ ๋ ๋ณต์กํด์ง๋๋ฐ์.
์ด๋ก์์ผ๋ก ํ์ํ 3๊ฐ์ ์ซ์๋ฅผ ์ผ์ชฝ์ผ๋ก ํ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ธ๋ฐ์.
์ด๋ฌํ ๊ฒฝ์ฐ ํ์ ์ ํ๊ฒ ๋๋ฉด ๊ทธ ์๋ ์๋ ์์๋ค์ ๋ผ์ด์ง๊ฒ ๋ฉ๋๋ค.
์ด ๋๋ ๋ผ์ด์ง ์์๋ค์ ์ฐจ๋ก๋ก ์์ ๊ฐ์ด ์ฝ์ ํ๊ณ ๊ท ํ์ ์ก์์ฃผ๋ฉด ๋ฉ๋๋ค.
์ด๋ ๊ฒ ๋ชจ๋ ์ฝ์ ํ๋ฉด ๊ท ํ์กํ ์ด์ง ํ์ ํธ๋ฆฌ๊ฐ ์์ฑ๋๊ฒ ๋ฉ๋๋ค.
์ค๋์ ์ด๋ ๊ฒ AVL ํธ๋ฆฌ๊ฐ ๋ฌด์์ด๊ณ , ์ ํ์ํ์ง, ๊ทธ๋ฆฌ๊ณ ๊ท ํ์ ์ก์๊ฐ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์์ต๋๋ค.
๋ค์ ์๊ฐ์๋ AVLํธ๋ฆฌ๋ฅผ ์ฝ๋๋ก ์ด๋ป๊ฒ ๊ตฌํํ๋์ง์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
'๐ฅ Computer Science > Data Structure' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Data Structure] B-Tree๋? (0) | 2021.12.06 |
---|---|
[Data Structure] AVL ํธ๋ฆฌ ๊ตฌํํด๋ณด๊ธฐ (feat. Swift) (0) | 2021.12.06 |
[Data Structure] ์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree) ๊ตฌํํด๋ณด๊ธฐ (feat.Swift) (0) | 2021.11.18 |
[Data Structure] ์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree)๋? (0) | 2021.11.17 |
[Data Structure] ํด์ฌ ํ ์ด๋ธ(Hash Table) ๊ตฌํํด๋ณด๊ธฐ(feat. Swift) (0) | 2021.11.16 |
๋๊ธ