Tree
ํธ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋์ ์ ๋ณด์ ๊ฐ ํญ๋ชฉ๋ค์ ๊ณ์ธต์ ์ผ๋ก ์ฐ๊ด๋๋๋ก ๊ตฌ์กฐํ์ํค๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ ๋น์ ํ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
๋ฐ์ดํฐ ์์๋ค์ ๋จ์ํ ๋์ด์ด ์๋ ๋ถ๋ชจ-์์ ๊ด๊ณ์ ๊ณ์ธต์ ๊ตฌ์กฐ๋ก ํํ์ด ๋๋ค.
ํธ๋ฆฌ๋ ๊ทธ๋ํ์ ํ ์ข
๋ฅ์ด๋ฉฐ ์ฌ์ดํด์ด ์๋ค.
์ฉ์ด
- node: ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ ๊ฐ ์์
- Edge(๊ฐ์ ): ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ๋
ธ๋์ ๋
ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ์
- Root Node: ์ต์์ ๊ณ์ธต์ ์กด์ฌํ๋ ๋
ธ๋
- level: ํธ๋ฆฌ์ ํน์ ๊น์ด๋ฅผ ๊ฐ์ง๋ ๋
ธ๋์ ์งํฉ
- degree(์ฐจ์): ํ์ ํธ๋ฆฌ ๊ฐ์ / ๊ฐ์ ์ (degree) = ๊ฐ ๋
ธ๋๊ฐ ์ง๋ ๊ฐ์ง์ ์
- Terminal Node ( = leaf Node, ๋จ๋ง ๋
ธ๋) : ํ์์ ๋ค๋ฅธ ๋
ธ๋๊ฐ ์ฐ๊ฒฐ๋์ด ์์ง ์์ ๋
ธ๋
- Internal Node (๋ด๋ถ๋
ธ๋, ๋น๋จ๋ง ๋
ธ๋) : ๋จ๋ง ๋
ธ๋๋ฅผ ์ ์ธํ ๋ชจ๋ ๋
ธ๋๋ก ๋ฃจํธ ๋
ธ๋๋ฅผ ํฌํจํ๋ค.
์ด์งํธ๋ฆฌ(Binary Tree)
์ด์งํธ๋ฆฌ๋ ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๋
ธ๋๋ค์ ์ต๋ ์ฐจ์(degree)๊ฐ 2์ธ ๋
ธ๋๋ค๋ก ๊ตฌ์ฑ๋๋ ํธ๋ฆฌ์ด๋ค.
- ์ด์งํธ๋ฆฌ์ ๋ ๋ฒจ i์์ ๊ฐ์ง ์ ์๋ ์ต๋ ๋
ธ๋์ ์๋ 2^i์ด๋ค. (i>=0)
- ๊น์ด๊ฐ k์ธ ์ด์งํธ๋ฆฌ๊ฐ ๊ฐ์ง ์ ์๋ ์ต๋ ๋
ธ๋์ ์๋ 2^k-1์ด๋ค.(k>=1)
์ด์งํธ๋ฆฌ๋ ์์ ์ด์ง ํธ๋ฆฌ(Completable Binary Tree)
์ ํฌํ ์ด์ง ํธ๋ฆฌ(Perfect Binary Tree)
, ์ ์ด์ง ํธ๋ฆฌ(Full Binary Tree)
๋ผ๊ณ ํ๋ ํน๋ณํ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ ์ํ ์ ์๋ค.
์์ ์ด์ง ํธ๋ฆฌ
- ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ ์์์ ๋ ๋จ๋ง ๋
ธ๋์ ๋ ๋ฒจ ์ฐจ์ด๊ฐ 1์ดํ์ด๊ณ ,
- ๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ ๋ชจ๋ ๋ ๋ฒจ์ ์กด์ฌํ ์ ์๋ ๋ชจ๋ ๋
ธ๋๋ฅผ ๊ฐ๊ณ ์์ผ๋ฉฐ,
- ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฑ์์ง๋ ์ด์งํธ๋ฆฌ
heap
์ ์ด์ง ํธ๋ฆฌ
- ๋ชจ๋ ๋
ธ๋๊ฐ 0๊ฐ ๋๋ 2๊ฐ์ ์์ ๋
ธ๋๋ฅผ ๊ฐ๋ ํธ๋ฆฌ.
ํฌํ ์ด์ง ํธ๋ฆฌ
- ๋ชจ๋ ๋ ๋ฒจ์ ๋
ธ๋๊ฐ ์ฐจ์๋ ์ํ๋ก ์ต๋ ๋
ธ๋ ์์ธ 2^k-1๊ฐ๋ก ์ฑ์์ ธ ์๋ ํธ๋ฆฌ
- ์ ์ด์ง ํธ๋ฆฌ์ด๋ฉด์ ์์ ์ด์ง ํธ๋ฆฌ์ธ ๊ฒฝ์ฐ
์ด์ง ํธ๋ฆฌ์ ํํ
- ๋ฐฐ์ด์ ์ด์ฉํ ํํ
- ๋น ๋
ธ๋์ ๋ํด์๋ ๊ณ์ ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น
- ๋ฐ์ดํฐ์ ์ฝ์
, ์ญ์ ์ฐ์ฐ์ ๋
ธ๋์ ๋ ๋ฒจ ๋ณ๊ฒฝ์ผ๋ก ์ธํ ๋ฐ์ดํฐ์ ์ด๋ ๋ฐ์
- ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ ํํ
- ๊ฐ ๋
ธ๋๋ dataํ๋์ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํค๋ ํ๋, ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํค๋ ํ๋๋ก ๊ตฌ์ฑ
์ด์ง ํธ๋ฆฌ ์ํ
1. ์ค์ ์ํ(inorder traversal)
์ผ์ชฝ ์๋ธํธ๋ฆฌ -> ๋ฃจํธ -> ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ
๋ฃจํธ ๋
ธ๋๊ฐ ๊ฐ์ด๋ฐ์ ์จ๋ค.
4-2-5-1-3
.
2. ํ์ ์ํ(postorder traversal)
์ผ์ชฝ ์๋ธํธ๋ฆฌ -> ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ -> ๋ฃจํธ
๋ฃจํธ ๋
ธ๋๊ฐ ํ์์ ์จ๋ค.
4-5-2-3-1
.
3. ์ ์ ์ํ(preorder traversal)
๋ฃจํธ -> ์ผ์ชฝ -> ์ค๋ฅธ์ชฝ
๋ฃจํธ ๋
ธ๋๊ฐ ๋งจ ์์ ์จ๋ค.
1-2-4-5-3
์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree)
๋ชจ๋ ๋
ธ๋๊ฐ ์์ ์ ์ผ์ชฝ ์๋ธํธ๋ฆฌ์๋ ํ์ฌ๋
ธ๋๋ณด๋ค ์์ ํค๊ฐ์ด, ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ์๋ ํ์ฌ ๋
ธ๋๋ณด๋ค ํฐ ๊ฐ์ด ์ค๋ ๊ท์น์ ๋ง์กฑํ๋ ์ด์งํธ๋ฆฌ์ด๋ค.
๋ชจ๋ ์ผ์ชฝ ์์๋ค <= n < ๋ชจ๋ ์ค๋ฅธ์ชฝ ์์๋ค
(๋ชจ๋ ๋
ธ๋ n์ ๋ํด์ ๋ฐ๋์ ์ฐธ)
๊ท์น 1. ์ด์ง ํ์ ํธ๋ฆฌ์ ๋
ธ๋์ ์ ์ฅ๋ ํค๋ ์ ์ผํ๋ค.
๊ท์น 2. ๋ฃจํธ ๋
ธ๋์ ํค๊ฐ ์ผ์ชฝ ์๋ธ ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ์ด๋ ํ ๋
ธ๋์ ํค๋ณด๋ค ํฌ๋ค.
๊ท์น 3. ๋ฃจํธ ๋
ธ๋์ ํค๊ฐ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ์ด๋ ํ ๋
ธ๋์ ํค๋ณด๋ค ์๋ค.
๊ท์น 4. ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๋ ์ด์ง ํ์ ํธ๋ฆฌ์ด๋ค.
- ์ด์ง ํ์ ํธ๋ฆฌ์ ํ์ ์ฐ์ฐ์ ํ๊ท O(log n)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค.
- ๋น๊ต์ ์ฝ์
, ์ญ์ ๊ฐ ํจ์จ์ ์ธ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
- ์ด์ง ํ์ ํธ๋ฆฌ๋ Skewed Tree(ํธํฅ ํธ๋ฆฌ)๊ฐ ๋ ์ ์๋ค.
- ์ ์ฅ ์์์ ๋ฐ๋ผ ๊ณ์ ํ ์ชฝ์ผ๋ก๋ง ๋
ธ๋๊ฐ ์ถ๊ฐ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ.(O(n))
- ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ท ํ์กํ ์ด์ง๊ฒ์ํธ๋ฆฌ๋ฅผ ๊ณ ์. ๋ํ์ ์ธ ๊ฒ์ ๋ ๋๋ธ๋ํธ๋ฆฌ์ AVLํธ๋ฆฌ๋ค.
- ์ด์ง ํ์ ํธ๋ฆฌ๋ ์ด์ง ํ์์ ์ฝ๊ฒ ํ ์ ์๋๋ก ๋ง๋ค์ด์ง ํธ๋ฆฌ์ด๋ค.
Red-Black Tree
๋ ๋๋ธ๋ ํธ๋ฆฌ๋ ์๊ฐ๊ท ํ์ด์งํ์ ํธ๋ฆฌ(self-balancing binary search tree)๋ก์จ, ๋ํ์ ์ผ๋ก ์ฐ๊ด๋ฐฐ์ด(associative array) ๋ฑ์ ๊ตฌํํ๋๋ฐ ์ฐ์ด๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
ํน์ง
balanced binary search tree
- ์ด์ง ํ์ ํธ๋ฆฌ๊ฐ ํธํฅ ํธ๋ฆฌ๊ฐ ๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ๋ ์กฐ๊ฑด์ ์ถ๊ฐํจ
- ๊ท ํ์ด ์กํ ์ ๊ทธ๋ฆผ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์๋์จ๋ค -> ๋ ๋๋ธ๋ํธ๋ฆฌ์ ๋์ด๋ logn์ ๋ฐ์ด๋ ๋๋ค -> ๋ ๋๋ธ๋ํธ๋ฆฌ์์ ์ฝ์
, ์ญ์ , ๊ฒ์ ์ฐ์ฐ์ O(logn)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
- ์๋ฃ์ ์ฝ์
๊ณผ ์ญ์ , ๊ฒ์์์ ์ต์
์ ๊ฒฝ์ฐ์๋ ์ผ์ ํ ์คํ ์๊ฐ์ ๋ณด์ฅํ๋ค(worst-case guarantees).
- ์ด๋ ์ค์๊ฐ ์ฒ๋ฆฌ์ ๊ฐ์ ์คํ์๊ฐ์ด ์ค์ํ ๊ฒฝ์ฐ์ ์ ์ฉํ๊ฒ ์ฐ์ผ ๋ฟ๋ง ์๋๋ผ, ์ผ์ ํ ์คํ ์๊ฐ์ ๋ณด์ฅํ๋ ๋ ๋ค๋ฅธ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๋ฐ์๋ ์ธ๋ชจ๊ฐ ์๋ค. ์๋ฅผ ๋ค๋ฉด, ๊ฐ์ข
๊ธฐํํ ๊ณ์ฐ์ ์ฐ์ด๋ ๋ง์ ์๋ฃ ๊ตฌ์กฐ๋ค์ด ๋ ๋-๋ธ๋ ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ ธ ์๋ค.
์กฐ๊ฑด
- Root Property : ๋ฃจํธ๋
ธ๋์ ์๊น์ ๊ฒ์ (Black)์ด๋ค.
(์ถ๊ฐ๋๋ ๋
ธ๋๋ ๋นจ๊ฐ์ด๋ค)
- External Property : ๋ชจ๋ external node๋ค์ ๊ฒ์ (Black)์ด๋ค.
- Internal Property : ๋นจ๊ฐ(Red)๋
ธ๋์ ์์์ ๊ฒ์ (Black)์ด๋ค.
== No Double Red(๋นจ๊ฐ์ ๋
ธ๋๊ฐ ์ฐ์์ผ๋ก ๋์ฌ ์ ์๋ค.)
- Depth Property : ๋ชจ๋ ๋ฆฌํ๋
ธ๋์์ Black Depth๋ ๊ฐ๋ค.
== ๋ฆฌํ๋
ธ๋์์ ๋ฃจํธ๋
ธ๋๊น์ง ๊ฐ๋ ๊ฒฝ๋ก์์ ๋ง๋๋ ๋ธ๋๋
ธ๋์ ๊ฐ์๋ ๊ฐ๋ค.
(๊ทธ๋ฅ ๋
ธ๋์ ์๋ ๋ค๋ฅผ ์ ์์.)
์ ์กฐ๊ฑด๋ค์ ๋ง์กฑํ๊ฒ ๋๋ฉด, ๋ ๋๋ธ๋ ํธ๋ฆฌ๋ ๊ฐ์ฅ ์ค์ํ ํน์ฑ์ ๋ํ๋ด๊ฒ ๋๋ค. ๋ฃจํธ ๋
ธ๋๋ถํฐ ๊ฐ์ฅ ๋จผ ๊ฒฝ๋ก๊น์ง์ ๊ฑฐ๋ฆฌ๊ฐ, ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฒฝ๋ก๊น์ง์ ๊ฑฐ๋ฆฌ์ ๋ ๋ฐฐ๋ณด๋ค ํญ์ ์๋ค. ๋ค์ ๋งํด ๋ ๋๋ธ๋ ํธ๋ฆฌ๋ ๊ฐ๋ต์ ์ผ๋ก ๊ท ํ์ด ์กํ์๋ค. ๋ฐ๋ผ์, ์ฝ์
, ์ญ์ , ๊ฒ์ ์ ์ต์
์ ๊ฒฝ์ฐ(worst-case)์์์ ์๊ฐ๋ณต์ก๋๊ฐ ํธ๋ฆฌ์ ๋์ด(๊น์ด)์ ๋ฐ๋ผ ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ ๋ณดํต์ ์ด์ง๊ฒ์ ํธ๋ฆฌ์ ๋นํด ํจ์จ์ ์ด๋ค.
Double Red ํด๊ฒฐ ์ ๋ต
์ด๋ ๊ฒ ์ฐ์ํด์ ๋นจ๊ฐ ๋
ธ๋๊ฐ ์ค๊ฒ ๋์์ ๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๊ฐ์ง ์ด๋ค.
ํ์ฌ insert๋ ๋
ธ๋์ uncle node(๋ถ๋ชจ ๋
ธ๋์ ํ์ ๋
ธ๋)๋ฅผ w๋ผ๊ณ ํ ๋,
- w==Black ๐ Restructuring
- w==Red ๐ Recoloring
์ฆ, insert๋
ธ๋์ uncle node์ ์์ ๊ธฐ์ค์ผ๋ก ํด๊ฒฐ ์ ๋ต์ด ๋ฌ๋ผ์ง๊ฒ ๋๋ค.
Restructing
1. ๋(z)์ ๋ด ๋ถ๋ชจ(v), ๋ด ๋ถ๋ชจ์ ๋ถ๋ชจ(Grand Parent)๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
2. ๋ฌด์กฐ๊ฑด ๊ฐ์ด๋ฐ ์๋ ๊ฐ์ ๋ถ๋ชจ๋ก ๋ง๋ค๊ณ ๋๋จธ์ง ๋์ ์์์ผ๋ก ๋ง๋ ๋ค.
3. ์ฌ๋ผ๊ฐ ๊ฐ์ด๋ฐ ์๋ ๊ฐ์ ๊ฒ์ (Black)์ผ๋ก ๋ง๋ค๊ณ ๊ทธ ๋์์๋ค์ ๋นจ๊ฐ(Red)๋ก ๋ง๋ ๋ค.
- Restructuring์ ๋ค๋ฅธ ์๋ธํธ๋ฆฌ์ ์ํฅ์ ๋ผ์น์ง ์๊ธฐ ๋๋ฌธ์(4๋ฒ์กฐ๊ฑด) ํ๋ฒ์ ๊ณผ์ ์ผ๋ก ์ข
๋ฃ.
- Restructing ์ ํ์ Black ๋
ธ๋์ ๊ฐ์์ ๋ณํ๊ฐ ์๊ธฐ๋๋ฌธ์ ๋ค๋ฅธ์๋ธํธ๋ฆฌ์ ์ํฅ์ ๋ผ์น์ง ์์
- Restructuring์์ฒด์ ์๊ฐ๋ณต์ก๋๋ O(1)์ ๋๋์ง๋ง, (์์๊ฒฐ์ ์๊ฐ - ์์์๊ฐ, ํธ๋ฆฌ๋ก ๋ง๋๋์๊ฐ - ์์์๊ฐ, ์๋์๋ ๋
ธ๋๋ค์ ๊ตฌ์กฐ๋ค์ ๋ฐ๊ฟ์ฃผ๋ ์๊ฐ - ์์์๊ฐ)
Restructuring์ ์ด๋ค ๋
ธ๋๋ฅผ insertionํ ๋ค ์ผ์ด๋๋ฏ๋ก ์ด ์ํ์๊ฐ์ O(logn)์ด๋ค. ์ง๊ธ ํ์ฌ ๋
ธ๋๊ฐ ๋ค์ด๊ฐ ์์น๋ฅผ ๋จผ์ ์ฐพ์์ผ ํ๊ธฐ ๋๋ฌธ.
Recoloring
1. ํ์ฌ insert๋ ๋
ธ๋(c)์ ๋ถ๋ชจ(p)์ ๊ทธ ํ์ (u)๋ฅผ ๊ฒ์ (Black)์ผ๋ก ํ๊ณ Grand Parent(๋ด ๋ถ๋ชจ์ ๋ถ๋ชจ)๋ฅผ ๋นจ๊ฐ(Red)๋ก ํ๋ค.
2. Grand Parent(๋ด ๋ถ๋ชจ์ ๋ถ๋ชจ)๊ฐ Root node๊ฐ ์๋์์ ์ Double Red๊ฐ ๋ค์ ๋ฐ์ ํ ์ ์๋ค.
- Recoloring์ ๊ฒฝ์ฐ Restructuring๊ณผ ๋ค๋ฅด๊ฒ propagation๋ ์ ์๋ค. ์ต์
์๊ฒฝ์ฐ Root๊น์ง ๊ฐ ์ ์์.
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 Tree๋ ๋๋ถ๋ถ์ ์ธ์ด์ map, multimap, multiset์์ ์ฌ์ฉ
- AVL tree๋ ์กฐํ์ ์๋๊ฐ ์ค์ํ Database์์ ์ฌ์ฉ
Heap
ํ(heap)์ ์์ ์ด์งํธ๋ฆฌ(Complete binary tree) ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ ์๋ฃ๊ตฌ์กฐ(tree-based structure) (์๊ฐ๋ณต์ก๋ : O(log N))
ํน์ง
- ์ผ๋ฐ์ ์ผ๋ก ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ๊ตฌํํ๋ค.๋ฐฐ์ด์ ํธ๋ฆฌ์ ๊ฐ๋ค์ ๋ฃ์ด์ค ๋, 0 ๋ฒ์งธ๋ ๊ฑด๋๋ฐ๊ณ 1 ๋ฒ index ๋ถํฐ ๋ฃจํธ๋
ธ๋๊ฐ ์์๋๋ค.
- ์ฌ๋ฌ ๊ฐ์ ๊ฐ๋ค ์ค์์ ์ต๋๊ฐ์ด๋ ์ต์๊ฐ์ ๋น ๋ฅด๊ฒ ์ฐพ์๋ด๋๋ก ๋ง๋ค์ด์ง ์๋ฃ๊ตฌ์กฐ์ด๋ค. (์ฐ์ ์์ํ ๊ตฌํ์ ์ฌ์ฉํจ)
- ํ์ ์ผ์ข
์ ๋ฐ์ ๋ ฌ ์ํ(๋์จํ ์ ๋ ฌ ์ํ) ๋ฅผ ์ ์งํ๋ค.
- ํฐ ๊ฐ์ด ์์ ๋ ๋ฒจ์ ์๊ณ ์์ ๊ฐ์ด ํ์ ๋ ๋ฒจ์ ์๋ค๋ ์ ๋
- ๊ฐ๋จํ ๋งํ๋ฉด ๋ถ๋ชจ ๋
ธ๋์ ํค ๊ฐ์ด ์์ ๋
ธ๋์ ํค ๊ฐ๋ณด๋ค ํญ์ ํฐ(์์) ์ด์ง ํธ๋ฆฌ๋ฅผ ๋งํ๋ค.
- ํ ํธ๋ฆฌ์์๋ ์ค๋ณต๋ ๊ฐ์ ํ์ฉํ๋ค. (์ด์ง ํ์ ํธ๋ฆฌ์์๋ ์ค๋ณต๋ ๊ฐ์ ํ์ฉํ์ง ์๋๋ค.)
ํ์ ์ข
๋ฅ
์ต๋ ํ
๋ถ๋ชจ๋
ธ๋์ ํค๊ฐ์ด ์์๋
ธ๋์ ํค๊ฐ๋ณด๋ค ํญ์ ํฐ ํ
Max Heap์์๋ Root node ์ ์๋ ๊ฐ์ด ์ ์ผ ํฌ๋ฏ๋ก, ์ต๋๊ฐ์ ์ฐพ๋๋ฐ ์์๋๋ ์ฐ์ฐ์ time complexity ์ด O(1)์ด๋ค. ๊ทธ๋ฆฌ๊ณ complete binary tree์ด๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๋ค. (์ฆ, random access ๊ฐ ๊ฐ๋ฅํ๋ค. Min heap ์์๋ ์ต์๊ฐ์ ์ฐพ๋๋ฐ ์์๋๋ ์ฐ์ฐ์ time complexity ๊ฐ O(1)์ด๋ค.)
์ต์ ํ
๋ถ๋ชจ๋
ธ๋์ ํค๊ฐ์ด ์์๋
ธ๋์ ํค๊ฐ๋ณด๋ค ํญ์ ์์ ํ
ํค๊ฐ์ ๋์๊ด๊ณ๋ ๋ถ๋ชจ-์์ ๊ฐ์๋ง ์ฑ๋ฆฝํ๊ณ ํ์ ๊ฐ์๋ ์ฑ๋ฆฝํ์ง ์๋๋ค.
์ฝ์
(max heap ๊ธฐ์ค)
1. ํ์ ๊ฐ์ฅ ๋ง์ง๋ง ์์์ ์ํ๋ ๊ฐ์ ์ฝ์
ํ๋ค.
2. ๋ถ๋ชจ๊ฐ ์ฝ์
์์๋ณด๋ค ์๋ค๋ฉด(Max_Heap๊ธฐ์ค) ๋ถ๋ชจ์ ์์์ ๊ฐ์ ๊ตํํ๋ค.
3. 2๋ฒ์์ ๋ถ๋ชจ๊ฐ ์๊ฑฐ๋, ๋ถ๋ชจ๊ฐ ์์๋ณด๋ค ํด ๊ฒฝ์ฐ์ ์ข
๋ฃ
์ญ์
(max heap ๊ธฐ์ค)
1. ๋ฃจํธ๋
ธ๋๋ฅผ ์ญ์ ํ๊ณ ํ์ ๋ง์ง๋ง ๋
ธ๋๋ฅผ ๋ฃจํธ๋ก ๊ฐ์ ธ์จ๋ค.
2. ๊ฐ์ ธ์จ ๋ฃจํธ์ ์์๋
ธ๋๋ฅผ ๋น๊ตํ๊ณ ๊ฐ์ ธ์จ ๋
ธ๋๊ฐ ์์ ๊ฒฝ์ฐ ์์๊ณผ ์์น ๋ณ๊ฒฝ
3. ์์ ๋
ธ๋๊ฐ ๋์ด์ ์๊ฑฐ๋, ์์๋ณด๋ค ํด ๊ฒฝ์ฐ ์ข
๋ฃ
์ฐธ๊ณ
https://gmlwjd9405.github.io/2018/08/12/data-structure-tree.html
https://wayhome25.github.io/cs/2017/04/19/cs-23/
https://coderkoo.tistory.com/10
https://zeddios.tistory.com/237
https://nesoy.github.io/articles/2018-08/Algorithm-RedblackTree
Tree removal is often a tough decision to make, but sometimes it's the best choice for the overall health and aesthetics of our landscapes. Dead or diseased trees can attract pests, spread diseases to healthy trees, and even pose safety risks during storms. By promptly addressing such issues and seeking professional assistance, we can maintain the vitality of our outdoor areas while ensuring the well-being of our surroundings. Champaign Tree Squad