๊ทธ๋ํ์ ์ผ์ข
์ผ๋ก, ์ฌ๋ฌ ๋
ธ๋๊ฐ ํ๊ฐ์ ๋
ธ๋๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์๋ ๊ตฌ์กฐ
์ ํ๊ตฌ์กฐ๊ฐ ์๋ (๋น์ ํ), ๋ถ๋ชจ์์์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๋ ๊ณ์ธตํ ๊ตฌ์กฐ
-
Node (๋ ธ๋): ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ ๊ฐ๊ฐ์ ์์๋ฅผ ์๋ฏธํ๋ค. -
Edge (๊ฐ์ ): ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด ๋ ธ๋์ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ์ ์ ์๋ฏธํ๋ค. -
Root Node (๋ฃจํธ ๋ ธ๋): ํธ๋ฆฌ ๊ตฌ์กฐ์์ ์ต์์์ ์๋ ๋ ธ๋๋ฅผ ์๋ฏธํ๋ค. -
Terminal Node( =leaf Node, ๋จ๋ง ๋ ธ๋) : ํ์์ ๋ค๋ฅธ ๋ ธ๋๊ฐ ์ฐ๊ฒฐ๋์ด ์์ง ์์ ๋ ธ๋๋ฅผ ์๋ฏธํ๋ค. -
Internal Node(๋ด๋ถ๋ ธ๋, ๋น๋จ๋ง ๋ ธ๋) : ๋จ๋ง ๋ ธ๋๋ฅผ ์ ์ธํ ๋ชจ๋ ๋ ธ๋๋ก ๋ฃจํธ ๋ ธ๋๋ฅผ ํฌํจํ๋ค.
- Binary tree : ๋ถ๋ชจ ๋
ธ๋๊ฐ ์์ ๋
ธ๋๋ฅผ ์ต๋ 2๊ฐ์ฉ๋ง ๊ฐ๋ ํธ๋ฆฌ
- Ternary tree : ์์ ๋
ธ๋๋ฅผ 2๊ฐ ์ด์ ๊ฐ๊ณ ์๋ ํธ๋ฆฌ
๋ง์ง๋ง ๋ ๋ฒจ์ ์ ์ธํ ๋ชจ๋ ์๋ธํธ๋ฆฌ์ ๋ ๋ฒจ์ด ๊ฐ์์ผ ํ๊ณ , ๋ง์ง๋ง ๋ ๋ฒจ์ ์ผ์ชฝ๋ถํฐ ์ฑ์์ ธ ์์ด์ผ ํ๋ค.
์์ ๋ ธ๋๊ฐ ์๊ฑฐ๋ 2๊ฐ์ธ ํธ๋ฆฌ
๋น ๊ณต๊ฐ์ด ์์ด ๋ชจ๋ ๋
ธ๋๊ฐ 2๊ฐ์ ์์์ ๊ฐ๊ณ ์๋ ํธ๋ฆฌ
๋ถ๋ชจ๋ ธ๋ ๋ณด๋ค ์์ ๊ฐ์ ๋ ธ๋๋ ์ผ์ชฝ child, ํฐ ๊ฐ์ ๋ ธ๋๋ ์ค๋ฅธ์ชฝ child๋ก ๊ตฌ์ฑ๋์ด ์๋ tree.
key๊ฐ์ ์ค๋ณต์ด ํ์ฉ๋์ง ์๋๋ค.
- ์ ์ ์ํ : root๋ฅผ ์ ์ผ ๋จผ์ ์ํ
- ์ค์ ์ํ : root๋ฅผ ์ค๊ฐ์ ์ํ
- ํ์ ์ํ : root๋ฅผ ์ ์ผ ๋์ค์ ์ํ
key๊ฐ์ ์ค๋ณต๋์ง ์์ผ๋ฉฐ, ๋ถ๋ชจ์ ํค๊ฐ ์ผ์ชฝ ์์๋ณด๋ค๋ ํฌ๋ฉฐ, ์ค๋ฅธ์ชฝ ์์ ๋ณด๋ค๋ ์๋ค.
์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ์๋ธํธ๋ฆฌ๋ ์ด์ง ํ์ ํธ๋ฆฌ์ด๋ค.
ํ์ ์ฐ์ฐ์ O(logn)์ ๊ฐ์ผ๋ฉฐ (์๋ฐํ ๋งํ๋ฉด O(h), h๋ ๋์ด ), ํ์ชฝ์ผ๋ก ์น์ฐ์ณ์ง ํธํฅ ํธ๋ฆฌ(Skewed Tree)๊ฐ ๋๋ฉด worst case๋ก O(n)์ ๊ฐ๋๋ค.
๋ฐฐ์ด๋ณด๋ค ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง๋ง ์๊ฐ๋ณต์ก๋๊ฐ ๊ฐ๊ฒ๋๋ ๋นํจ์จ์ ์ด ์ํฉ์ด ๋ฐ์ํ๊ธฐ๋ ํ๋ค.
โก Rebalancing ๊ธฐ๋ฒ์ ๋ฑ์ฅ