DOing
[์๋ฃ๊ตฌ์กฐ] ํธ๋ฆฌ with Python ๋ณธ๋ฌธ
๐ก ํธ๋ฆฌ
: ํธ๋ฆฌ๋ Node์ Branch๋ฅผ ์ด์ฉํด์, ์ฌ์ดํด์ ์ด๋ฃจ์ง ์๋๋ก ๊ตฌ์ฑํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ด๋ค.
Level : ๋ฃจํธ๋ ธ๋๋ถํฐ ํ์ฌ ๋ ธ๋๊น์ง์ ๊น์ด
Height(๋์ด)
: ํธ๋ฆฌ์์ ๋ ธ๋๊ฐ ๊ฐ์ง ์ ์๋ ์ต๋ Level
: ํด๋น ํธ๋ฆฌ์ ๋์ด๋ 3์ด๋ค.
๐ก ์ด์งํธ๋ฆฌ(Binary Tree)
: ์ด์งํธ๋ฆฌ๋ ๋ ธ๋์ ์ต๋ ๋ธ๋์น๊ฐ 2์ธ ํธ๋ฆฌ์ด๋ค.
Q1. ์ด์งํธ๋ฆฌ์ ์๋ ๊ฐ ๋ ๋ฒจ์ ์ต๋ ๋ ธ๋์ ๊ฐ์๋?
๋ ๋ฒจ์ด k์ผ๋, ๊ฐ ๋ ๋ฒจ์ ์ต๋๋ก ๋ค์ด๊ฐ ์ ์๋ ๋ ธ๋์ ๊ฐ์๋ 2^k ๊ฐ์ด๋ค.
1 Level 0 -> 1๊ฐ
2 3 Level 1 -> 2๊ฐ
4 5 6 7 Level 2 -> 4๊ฐ
8 9....... 14 15 Level 3 -> 8๊ฐ
Level k -> 2^k ๊ฐ
Q2. ๋์ด๊ฐ h์ด๊ณ ๊ฝ ์ฐจ์๋ ์ด์ง ํธ๋ฆฌ๋ผ๋ฉด, ๋ชจ๋ ๋ ธ๋์ ๊ฐ์๋?
1 + 2^1 + 2^2 + 2^3 + 2^4 ..... 2^h
์ฆ, ์ด๋ฅผ ์์์ผ๋ก ํํํ๋ฉด 2^{h+1} -1 ์ด๋ค.
Q3. ์ต๋ ๋ ธ๋์ ๊ฐ์๊ฐ N์ด๋ผ๋ฉด, ํธ๋ฆฌ์ ๋์ด h๋?
2^{h+1} -1 = N → h = log_{2}(N+1)-1
๐ก ์์ ์ด์ง ํธ๋ฆฌ(Complete Binary Tree)
: ์์ ์ด์ง ํธ๋ฆฌ๋ ์ตํ๋จ ์ผ์ชฝ ๋ ธ๋๋ถํฐ ์ฐจ๋ก๋๋ก ์ฑ์์ ธ์๋ ์ด์ง ํธ๋ฆฌ์ด๋ค.
[ ์์ ์ด์ง ํธ๋ฆฌ ๊ตฌํ : ๋ฐฐ์ด ]
์์ ์ด์ง ํธ๋ฆฌ์ ๊ฒฝ์ฐ, ํด๋์ค๋ก ๊ตฌํํ ์๋ ์๊ณ ๋ฐฐ์ด๋ก๋ ๊ตฌํํ ์ ์๋ค.
๋ค์๊ณผ ๊ฐ์ ํธ๋ฆฌ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์.
ํด๋น ํธ๋ฆฌ๋ [None, 8, 6, 3, 4, 2, 5] ๋ผ๋ ๋ฐฐ์ด๋ก ํํํ ์ ์๋ค.
8 Level 0
6 3 Level 1
4 2 5 Level 2
๋ฐฐ์ด์์ ํธ๋ฆฌ๋ก ์ ๊ทผํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ๊ฐ์๋ค.
1. ์ผ์ชฝ ์์์ ์ธ๋ฑ์ค : ํ์ฌ ์ธ๋ฑ์ค * 2
2. ์ค๋ฅธ์ชฝ ์์์ ์ธ๋ฑ์ค : ํ์ฌ ์ธ๋ฑ์ค * 2 + 1
3. ๋ถ๋ชจ์ ์ธ๋ฑ์ค : ํ์ฌ ์ธ๋ฑ์ค // 2
์๋ฅผ ๋ค์ด์ 1๋ฒ์งธ ์ธ๋ฑ์ค์ธ 8์ ์ผ์ชฝ ์์์ 6, ์ค๋ฅธ์ชฝ ์์์ 3 ์ ๋๋ค.
1. ์ผ์ชฝ ์์ ์ฐพ๊ธฐ : 1 * 2 = 2, ์ธ๋ฑ์ค 2์ ๊ฐ 6.
2. ์ค๋ฅธ์ชฝ ์์ ์ฐพ๊ธฐ : 1 * 2 + 1 = 3, ์ธ๋ฑ์ค 3์ ๊ฐ 3.
3. ์ธ๋ฑ์ค 3์ ๋ถ๋ชจ ์ฐพ๊ธฐ : 3 // 2 = 1, ์ธ๋ฑ์ค1์ ๊ฐ 8.
๐ก ๊ทธ ์ธ์ ํธ๋ฆฌ ์ข ๋ฅ
- ์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree) : ์ด์ง ํ์์ด ๋์ํ ์ ์๋๋ก ๊ณ ์๋ ๋ณํ๋ ์ด์ง ํธ๋ฆฌ
- ํ : ๋ฐ์ดํฐ์์ ์ต๋/์ต์๊ฐ์ ๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ ์ํด ๊ณ ์๋ ๋ณํ๋ ์์ ์ด์งํธ๋ฆฌ
- ํ vs ์ด์ง ํ์ํธ๋ฆฌ
- ๊ณตํต์ : ๋๋ค ์ด์งํธ๋ฆฌ
- ์ฐจ์ด์
1. ๋ชฉ์
์ด์ง ํ์ํธ๋ฆฌ๋ ํน์ ๋ ธ๋๋ฅผ ๋น ๋ฅด๊ฒ ํ์ํ๊ธฐ ์ํ ๊ตฌ์กฐ, ํ์ ์ต๋ ํน์ ์ต์๊ฐ์ ํ์ํ๊ธฐ ์ํ ๊ตฌ์กฐ
2. ์ต๋/์ต์ ๊ฐ์ ์์น
์ด์ง ํ์ํธ๋ฆฌ๋ ์ต๋๊ฐ์ด ์ฐ ์ตํ๋จ, ์ต์๊ฐ์ ์ข ์ตํ๋จ์ด์ง๋ง ํ์ ์ต์๋จ์ ์ต๋/์ต์ ๊ฐ์ด ์์น
๐ก ์์ ์ด์งํธ๋ฆฌ ์์
[HSAT 5ํ ์ ๊ธฐ ์ฝ๋ฉ ์ธ์ฆํ๊ฐ ๊ธฐ์ถ] ์ ๋ฌด ์ฒ๋ฆฌ
์ด๋ค ๋ถ์์ ์ ๋ฌด ์กฐ์ง์ ์์ ์ด์งํธ๋ฆฌ ๋ชจ์์ด๋ค. ์ฆ, ๋ถ์์ฅ์ด ๋ฃจํธ์ด๊ณ ๋ถ์์ฅ ํฌํจ ๊ฐ ์ง์์ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ ๋ถํ ์ง์์ ๊ฐ์ง๋ค. ๋ถํ ์ง์์ด ์๋ ์ง์์ ๋ง๋จ ์ง์์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋ชจ๋ ๋ง๋จ ์ง์์ ๋ถ์์ฅ๊น์ง ์ฌ๋ผ๊ฐ๋ ๊ฑฐ๋ฆฌ๊ฐ ๋์ผํ๋ค. ์กฐ์ง๋ ํธ๋ฆฌ์ ๋์ด๋ H์ด๋ค. ์๋๋ ๋์ด๊ฐ 1์ด๊ณ ์ ๋ฌด๊ฐ 3๊ฐ์ธ ์กฐ์ง๋๋ฅผ ๋ณด์ฌ์ค๋ค.
์ ๋ฌด๋ R์ผ ๋์ ์งํ๋๋ค. ์ฒ์์ ๋ง๋จ ์ง์๋ค๋ง ๊ฐ๊ฐ K๊ฐ์ ์์๊ฐ ์ ํด์ง ์ ๋ฌด๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๊ฐ ์ ๋ฌด๋ ์ ๋ฌด ๋ฒํธ๊ฐ ์๋ค. ๊ฐ ๋ ์ง์ ๋จ์ ์ ๋ฌด๊ฐ ์๋ ๊ฒฝ์ฐ, ๋ง๋จ ์ง์์ ํ๋์ ์ ๋ฌด๋ฅผ ์ฒ๋ฆฌํด์ ์์ฌ์๊ฒ ์ฌ๋ฆฐ๋ค. ๋ค๋ฅธ ์ง์๋ค๋, ๋๊ธฐํ๋ ์ ๋ฌด๊ฐ ์๋ ๊ฒฝ์ฐ ์ ๋ฌด๋ฅผ ์ฌ๋ผ์จ ์์๋๋ก ํ๋ ์ฒ๋ฆฌํด์ ์์ฌ์๊ฒ ์ฌ๋ฆฐ๋ค. ๋จ, ํ์ ๋ฒ์งธ ๋ ์ง์๋ ์ผ์ชฝ ๋ถํ ์ง์์ด ์ฌ๋ฆฐ ์ ๋ฌด๋ฅผ, ์ง์ ๋ฒ์งธ ๋ ์ง์๋ ์ค๋ฅธ์ชฝ ๋ถํ ์ง์์ด ์ฌ๋ฆฐ ์ ๋ฌด๋ฅผ ์ฒ๋ฆฌํ๋ค.
๋ถ์์ฅ์ด ์ฒ๋ฆฌํ ์ผ์ ์๋ฃ๋ ๊ฒ์ด๋ค. ์ ๋ฌด๋ฅผ ์ฌ๋ฆฌ๋ ๊ฒ์ ๋ชจ๋ ๋์์ ์งํํ๋ค. ๋ฐ๋ผ์ ๊ทธ๋ ์ฌ๋ฆฐ ์ ๋ฌด๋ฅผ ์์ฌ๊ฐ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๊ทธ ๋ค์๋ ์์ผ ๊ฐ๋ฅํ๋ค.
๋ถ์์ ์กฐ์ง๊ณผ ๋๊ธฐํ๋ ์ ๋ฌด๋ค์ ์ ๋ ฅ ๋ฐ์ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋ ์ ๋ฌด๋ค์ ๋ฒํธ์ ํฉ์ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ.
์ฒซ ์ค์ ์กฐ์ง๋์ ๋์ด H, ๋ง๋จ์ ๋๊ธฐํ๋ ์ ๋ฌด์ ๊ฐ์ K, ์ ๋ฌด๊ฐ ์งํ๋๋ ๋ ์ง ์ R์ด ์ฃผ์ด์ง๋ค.
๊ทธ ๋ค์ ์ค๋ถํฐ ๊ฐ๊ฐ์ ๋ง๋จ ์ง์์ ๋ํด ๋๊ธฐํ๋ ์ ๋ฌด๊ฐ ์์๋๋ก ์ฃผ์ด์ง๋ค.
์ ์ผ ์ผ์ชฝ์ ๋ง๋จ ์ง์๋ถํฐ ์์๋๋ก ์ฃผ์ด์ง๋ค.
์๋ฃ๋ ์ ๋ฌด๋ค์ ๋ฒํธ ํฉ์ ์ ์๋ก ์ถ๋ ฅํ๋ค.
์ถ์ฒ
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ๊ทํํ์ (0) | 2021.05.19 |
---|---|
[์๋ฃ๊ตฌ์กฐ] ์ฐ์ ์์ ํ, ํ (0) | 2021.05.19 |
[์๋ฃ๊ตฌ์กฐ] ํด์ฌ ํ ์ด๋ธ with Python (0) | 2021.05.18 |
์๊ฐ ๋ณต์ก๋ - ๋น ์คํ๊ธฐ๋ฒ (0) | 2021.05.18 |
[์๋ฃ๊ตฌ์กฐ] ๋ฆฌ์คํธ with Python (0) | 2021.05.18 |