BST์์ ํ์ชฝ์๋ง ๋ ธ๋๋ค์ด ์น์ฐ์น ๊ฒฝ์ฐ๊ฐ ์๊ธธ ์ ์๋ค. -> ํ์์ ์ํ ์๊ฐ์ด ๋์ด๋๋ค. -> ์ด๋ฅผ ๋ณด์ํ์ฌ ๊ท ํ์กํ ํธ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ์ ๋ง๋ค์ด์ง ์๋ฃ๊ตฌ์กฐ
Red-Black Tree๋ ๊ท ํ ์กํ ์ด์ง ํ์ ํธ๋ฆฌ( balanced binary search tree )
-
Root property: ๋ฃจํธ ๋ ธ๋์ ์๊น์ ๊ฒ์ ์ด๋ค.
-
External property: ๋ชจ๋ external(leaf) node๋ค์ ๊ฒ์ ์ด๋ค.
-
Internal property: ๋นจ๊ฐ๋ ธ๋์ ์์์ ๋ฐ๋์ ๊ฒ์ ์ด๋ค.
-> No Double Red: ๋นจ๊ฐ์ ๋ ธ๋๊ฐ ์ฐ์์ผ๋ก ๋์ฌ ์ ์๋ค.
-
Depth property: ๋ชจ๋ ๋ฆฌํ๋ ธ๋์์ black depth๋ ๊ฐ๋ค.
-> ๋ฆฌํ๋ ธ๋์์ ๋ฃจํธ๋ ธ๋๊น์ง ๊ฐ๋ ๊ฒฝ๋ก์์ ๋ง๋๋ ๋ธ๋๋ ธ๋์ ๊ฐ์๋ ๊ฐ๋ค.(๊ทธ๋ฅ ๋ ธ๋์ ์๋ ๋ค๋ฅผ ์ ์๋ค.)
์์ ์กฐ๊ฑด๋ค์ด Red-Black Tree์ ๋์ด๋ฅผ logn์ ๋ฐ์ด๋๋๋๋ก ํด์ค๋ค.
[4,2,8,3]
- Root property์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฃจํธ ๋ ธ๋์ ์๊น์ ๊ฒ์ ์ ์ค๋๋ค.
- ๋ฃจํธ ๋ ธ๋ ์ธ์ ์ฝ์ ๋๋ ๋ ธ๋์ ์๊น์ Red๋ผ๊ณ ๊ฐ์ ํ๊ณ ์์ํฉ๋๋ค.
- ๋ ธ๋ 3์ ์ฝ์ ํ๋ฉด BST์ ํน์ง์ ๋ฐ๋ผ ๋ ธ๋ 2์ ์ค๋ฅธ์ชฝ ์์์ผ๋ก ๋ถ๊ฒ ๋ฉ๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด Internal property ์กฐ๊ฑด์ ์๋ฐํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด 2๊ฐ์ง ๋ฉ์ปค๋์ฆ์ด ์กด์ฌํฉ๋๋ค.
-
Restructuring
-
Recoloring
ํ์ฌ insert ๋ ธ๋์ ๋ถ๋ชจ์ ํ์ ๋ ธ๋์ ์๊น์ ๋ฐ๋ผ ๋งค์ปค๋์ฆ์ด ๊ฒฐ์ ๋ฉ๋๋ค.
- Restructuring: ๋ถ๋ชจ์ ํ์ ๋ ธ๋๊ฐ Black์ผ ๋
1. ๋(z)์ ๋ด ๋ถ๋ชจ(v), ๋ด ๋ถ๋ชจ์ ๋ถ๋ชจ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
2. ๋ฌด์กฐ๊ฑด ๊ฐ์ด๋ฐ ์๋ ๊ฐ์ ๋ถ๋ชจ๋ก ๋ง๋ค๊ณ ๋๋จธ์ง ๋์ ์์์ผ๋ก ๋ง๋ ๋ค.
3. ๊ฐ์ด๋ฐ ์๋ ๊ฐ(๋ถ๋ชจ๊ฐ ๋ ๊ฐ)์ ๊ฒ์ ์ผ๋ก ๋ง๋ค๊ณ ๊ทธ ๋ ์์๋ค์ ๋นจ๊ฐ์ผ๋ก ๋ง๋ ๋ค.
- ๋ค๋ฅธ ์๋ธํธ๋ฆฌ์ ์ํฅ์ ๋ฏธ์น์ง ์๊ธฐ ๋๋ฌธ์ double red๋ฅผ ํด๊ฒฐํ๊ธฐ ์ ๊ณผ ํ์ black node์ ๊ฐ์์ ๋ณํ๊ฐ ์๋ค. -> Double Red ์กฐ๊ฑด์ด ๋ฐ์ํ์ง ์๋๋ค. -> restructuring์ ์ํ์ ๋๋๋ค.
- Recoloring: ๋ถ๋ชจ์ ํ์ ๋ ธ๋๊ฐ Red์ผ ๋
1. ํ์ฌ insert๋ ๋
ธ๋(z)์ ๋ถ๋ชจ(v)์ ๋ถ๋ชจ์ ํ์ (w)๋ฅผ ๊ฒ์ ์ผ๋ก ํ๊ณ ๋ด ๋ถ๋ชจ์ ๋ถ๋ชจ๋ฅผ ๋นจ๊ฐ์ผ๋ก ํ๋ค.
2. ๋ถ๋ชจ์ ๋ถ๋ชจ๊ฐ root node๊ฐ ์๋์์ ๋ double red(3๋ฒ ์กฐ๊ฑด)๊ฐ ๋ค์ ๋ฐ์ ํ ์ ์๋ค. -> ์ต์
์ ๊ฒฝ์ฐ์ root node๊น์ง ์ญ ์ฌ๋ผ๊ฐ์ ๊ณ์ ์ฐ์ฐํด์ผํ ์ ์๋ค.
- ๋ถ๋ชจ์ ๋ถ๋ชจ์ ํ์ ๋ฅผ ๊ฒ์ ์ผ๋ก ๋ฐ๊พธ๋ฉด Depth Property ์กฐ๊ฑด์ ๋ง์กฑํ๋์? -> Black Depth๋ ์ผ์ ํ 1 ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ๋ง์กฑํฉ๋๋ค.
-
๊ฒ์์ ์๊ฐ๋ณต์ก๋: O(logn) -> balanced binary search tree์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
-
์ฝ์ ์ ์๊ฐ๋ณต์ก๋: O(logn) ->
- Restructuring: ์์ ๊ฒฐ์ , ํธ๋ฆฌ๋ก ๋ง๋๋ ์๊ฐ, ์๋ ๋ ธ๋์ ๊ตฌ์กฐ๋ก ๋ฐ๊ฟ์ฃผ๋ ์๊ฐ ๋ชจ๋ ์์ ์๊ฐ์ด๊ธฐ ๋๋ฌธ์ restructuring ์์ฒด ์๊ฐ ๋ณต์ก๋๋ O(1)์ด์ง๋ง ์ด๋ค ๋ ธ๋๋ฅผ insertํ ๋ค ์ผ์ด๋๋ฏ๋ก ์ด ์ํ ์๊ฐ์ O(logn)์ ๋๋ค.
- Recoloring: insertํด์ค ์์น๋ฅผ ์ฐพ๋๋ฐ O(logn)์ recoloring์ ํด์ฃผ๋๋ฐ ์๊น๋ง ๋ฐ๊ฟ์ฃผ๊ธฐ ๋๋ฌธ์ O(1)์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ณ root node๊น์ง ํผ์ ธ ๋๊ฐ๋ฉด O(logn)์๊ฐ์ด ๊ฑธ๋ฆฌ๊ฒ ๋ฉ๋๋ค
-
์ญ์ ์ ์๊ฐ๋ณต์ก๋: O(logn)
AVL Tree์ Red-Black Tree ์ฐจ์ด
-
AVL Tree๊ฐ Red Black Tree๋ณด๋ค ๋น ๋ฅธ Search๋ฅผ ์ ๊ณตํฉ๋๋ค.
- AVL Tree๊ฐ ๋ ์๊ฒฉํ Balanced๋ฅผ ์ ์งํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
-
Red Black Tree์ AVL Tree๋ณด๋ค ๋น ๋ฅธ ์ฝ์ ๊ณผ ์ ๊ฑฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- AVL Tree๋ณด๋ค Balanced๋ฅผ ๋์จํ๊ฒ ์ ์งํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
-
Red Black Tree๋ AVL Tree๋ณด๋ค ์๊น์ ์ ์ฅํ๊ธฐ ์ํด ๋ ๋ง์ Space Complexity๊ฐ ํ์ํฉ๋๋ค.
-
Red Black Trees๋ ๋๋ถ๋ถ์ ์ธ์ด์ map, multimap, multiset์์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
-
AVL tree๋ ์กฐํ์ ์๋๊ฐ ์ค์ํ Database์์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.