๐ฉ ์ผ์ข ์ ์๊ธฐ ๊ท ํ ์ด์ง ํ์ ํธ๋ฆฌ
์ด์ง ํ์ ํธ๋ฆฌ์ ์กฐํ๋ O(logn) ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ฒ ๋๋๋ฐ, ๋ฌธ์ ๋ ๊ท ํ์ด ๋ฌด๋์ง ๊ฒฝ์ฐ O(n)๊น์ง ์๊ฐ์ด ์ฆ๊ฐํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๐ ๋ ๋-๋ธ๋ ํธ๋ฆฌ์ ๊ฐ์ฅ ํฐ ํน์ง์ ์ฝ์ , ์ญ์ ๋์ ํธ๋ฆฌ์ ๋ชจ์์ด "๊ท ํ ์กํ๋๋ก" ๊ฐ ๋ ธ๋๋ค์ red or black ์์์ ๊ฐ์ง๋ค๋ ๊ฒ์ด๋ค. ๊ฒ์, ์ฝ์ , ์ญ์ ์ ์ต์ ์ ๊ฒฝ์ฐ์์๋ ๋ชจ๋ O(logn)์ด ๋ณด์ฅ๋๋ ์๋ฃ๊ตฌ์กฐ
๐ ์1. map
map์ ์ค๋ณต์ ํ์ฉํ์ง ์๋ (key, value) ์์ผ๋ก ์ด๋ฃจ์ด์ง ํธ๋ฆฌ
map์ ๋ด๋ถ ๊ตฌํ์ ๊ฒ์, ์ฝ์ , ์ญ์ ๊ฐ O(logn)์ผ๋ก ๋์ํ๋ ๋ ๋-๋ธ๋ ํธ๋ฆฌ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
๐ฉ ์ฑ์ง
๋ฆฌํ ๋ ธ๋๋ ๋ฐ๋ก key๋ data๋ฅผ ํฌํจํ์ง ์์ผ๋ฉฐ, ์ค์ ์ฝ๋์์๋ ๊ตฌํ๋์ง ์๋ "์์ ๊ฐ์์ ๋ ธ๋" ๐ null ๊ฐ์ ๊ฐ๋๋ค.
black height : ๋ฃจํธ ๋ ธ๋์์ ๋ฆฌํ ๋ ธ๋๊น์ง ๊ฒฝ๋ก์ ์๋ ๊ฒ์ ๋ ธ๋์ ๊ฐ์
1. ๊ฐ ๋ ธ๋๋ ๋ ๋ or ๋ธ๋
2. ๋ฃจํธ ๋ ธ๋, ๋ฆฌํ ๋ ธ๋๋ ๋ชจ๋ ๋ธ๋
3. ๋ ๋ ๋ ธ๋์ ์์์ ๋ชจ๋ ๋ธ๋
4. ๋ธ๋ ๋ ธ๋์ ์์์ ์๊ด ์์
5. ๋ฃจ ๋ ธ๋์์ ๋ชจ๋ ๋ฆฌํ ๋ ธ๋๊น์ง์ ๊ฒฝ๋ก์ ๋ํด์ ๊ฑฐ์น๋ ๋ธ๋ ๋ ธ๋์ ์ซ์๋ ๊ฐ๋ค.
๐ฉ ์ด๋ค ๋ ๋ฆฌํ ๋ ธ๋์ ๋ ๋ฒจ ์ฐจ์ด๊ฐ 2๋ฐฐ๋ฅผ ๋์ง ์๋ ๊ท ํ ํ์ ํธ๋ฆฌ
์ฑ์ง3 ๐ ๋ฃจํธ ๋ ธ๋์์ ๋ฆฌํ ๋ ธ๋์ ๊ฒฝ๋ก ์์๋ '๋นจ๊ฐ ๋ ธ๋์ ๊ฐ์ < ๊ฒ์ ๋ ธ๋์ ๊ฐ์'
์ฑ์ง4 ๐ ๋ฃจํธ ๋ ธ๋์์ ๋ฆฌํ ๋ ธ๋์ ๊ฒฝ๋ก ์์๋ ๋์ผํ ๊ฐ์์ ๊ฒ์ ๋ ธ๋๊ฐ ์กด์ฌ
๐ฉ ์ฌ์ค์ ์ด์ง ํ์ํธ๋ฆฌ
ํ์ ์ฐ์ฐ์ ์ด์ง ํ์ ํธ๋ฆฌ์ ๋์ผ
์ฝ์ ์ฐ์ฐ์ ํ์ ๊ณผ ์๊น ๋ณ๊ฒฝ๊ณผ ๊ฐ์ ์ถ๊ฐ ์ฐ์ฐ ํ์
๐ฉ ํ์
์ด์ง ํ์ ํธ๋ฆฌ์ ํ์ ๋ฐฉ๋ฒ๊ณผ ๋์ผ
๐ฉ ์ฝ์
ํ์์ด ์คํจํ null ๋ ธ๋์ ๋นจ๊ฐ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๊ณ , ๋ ์์ ๋ ธ๋๋ฅผ null๋ก ๋ง๋ ๋ค.
๋นจ๊ฐ ๋ ธ๋๊ฐ ์ฐ๋ฌ์ ๋ํ๋์ ์ฑ์ง3์ ๋ง์กฑํ์ง ๋ชปํ๋ค.
๐ ๋ฃจํธ ๋ ธ๋ ์ชฝ์ผ๋ก ์ฌ๋ผ๊ฐ๋ฉด์ ๋ ธ๋์ ๊ตฌ์กฐ์ ์๊น์ ์กฐ์ ํด์ ์ฑ์ง์ ๋ง์กฑ์์ผ์ผ ํ๋ค.
๐ ๋นจ๊ฐ ๋ ธ๋๊ฐ ์ฐ๋ฌ์ ๋ํ๋๋ ๊ฒฝ์ฐ์ ์ ์ฉํ๋ ๊ท์น
<๊ท์น1> ๋ถ๋ชจ ๋ ธ๋์ ํ์ ๋ ธ๋๊ฐ ๋นจ๊ฐ์ธ ๊ฒฝ์ฐ
๐ ๋ถ๋ชจ ๋ ธ๋, ๋ถ๋ชจ ๋ ธ๋์ ํ์ ๋ ธ๋, ๋ถ๋ชจ ๋ ธ๋์ ๋ถ๋ชจ ๋ ธ๋์ ์๊น์ ๋ชจ๋ ๋ณ๊ฒฝ
<๊ท์น2> ๋ถ๋ชจ ๋ ธ๋์ ํ์ ๋ ธ๋๊ฐ ๊ฒ์ ์ด๊ณ , ํ์ฌ ๋ ธ๋์ ํค๊ฐ์ด ๋ถ๋ชจ ๋ ธ๋์ ๋ถ๋ชจ ๋ ธ๋์ ๋ถ๋ชจ ๋ ธ๋ ํค๊ฐ์ ์ฌ์ด์ธ ๊ฒฝ์ฐ
๐ ํ์ฌ ๋ ธ๋์ ๋ถ๋ชจ ๋ ธ๋๋ฅผ ํ์ ์ํด
<๊ท์น3> ๋ถ๋ชจ ๋ ธ๋์ ํ์ ๋ ธ๋๊ฐ ๊ฒ์ ์ด๊ณ , ํ์ฌ ๋ ธ๋์ ํค๊ฐ๋ณด๋ค ๋ถ๋ชจ ๋ ธ๋์ ๋ถ๋ชจ ๋ ธ๋์ ๋ถ๋ชจ ๋ ธ๋์ ํค๊ฐ์ด ํฐ/์์ ๊ฒฝ์ฐ
๐ ๋ถ๋ชจ ๋ ธ๋์ ๋ถ๋ชจ ๋ ธ๋์ ๋ถ๋ชจ ๋ ธ๋๋ฅผ ํ์ ์ํค๊ณ ์๊น์ ๋ณ๊ฒฝ
๋ถ๋ชจ ๋ ธ๋๊ฐ ํ์ ๋ ธ๋๋ฅผ ๊ฐ์ง์ง ์๋ ๊ฒฝ์ฐ
๐ ๋ถ๋ชจ ๋ ธ๋์ ๋ถ๋ชจ ๋ ธ๋๊ฐ null ๋ ธ๋๋ฅผ ์ผ์ชฝ ํน์ ์ค๋ฅธ์ชฝ ์์์ผ๋ก ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ์ด๋ค.
์ด ๋ null ๋ ธ๋ ๋ํ ๊ฒ์ ๋ ธ๋์ด๋ฏ๋ก, restructing ์ํ (๊ท์น2 or ๊ท์น3)
๐ฉ ์๊ฐ๋ณต์ก๋
O(logn)
๐ฉ ์ฅ์
์ฝ์ /์ญ์ ์์ ์ ๊ท ํ์ ๋ง์ถ๊ธฐ ์ํ ์์ ํ์๊ฐ ์ ๋ค.
๊ฐ ๋ ธ๋ ๋น ์๊น์ ํํํ๋ ๋ฐ ๋จ 1bit์ ์ ์ฅ๊ณต๊ฐ๋ง ํ์ํ๋ค.
cf. AVL ํธ๋ฆฌ : ์กฐํ ์ ๋ ๋น ๋ฅธ ์ฑ๋ฅ ์ง์
๐ฉ 2-3-4ํธ๋ฆฌ๋ฅผ ์ด์ง ํ์ ํธ๋ฆฌ๋ก ํํํ ๊ฒ
๋นจ๊ฐ ๋ ธ๋๋ฅผ ๋ถ๋ชจ ๋ ธ๋์ ๋ฌถ์ด์ ํ๋์ ๋ ธ๋๋ก ํํ
'๐ฉโ๐ป ํ๋ก๊ทธ๋๋ฐ > ๐ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํฌ๋ฃจ์ค์นผ ์๊ณ ๋ฆฌ์ฆ (์ต์ ์ ์ฅ ํธ๋ฆฌ) (1) | 2024.04.19 |
---|---|
B-ํธ๋ฆฌ (0) | 2024.04.16 |
2-3-4 ํธ๋ฆฌ (0) | 2024.04.14 |
์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree) (0) | 2024.04.14 |
์ด์ง ํ์(Binary Search) (0) | 2024.04.14 |