๊ด€๋ฆฌ ๋ฉ”๋‰ด

DOing

[์ž๋ฃŒ๊ตฌ์กฐ] ํŠธ๋ฆฌ with Python ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜

[์ž๋ฃŒ๊ตฌ์กฐ] ํŠธ๋ฆฌ with Python

mangdo 2021. 5. 18. 21:42

๐Ÿ’ก ํŠธ๋ฆฌ

: ํŠธ๋ฆฌ๋Š” 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  = Nh =  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์ด ์ฃผ์–ด์ง„๋‹ค.

๊ทธ ๋‹ค์Œ ์ค„๋ถ€ํ„ฐ ๊ฐ๊ฐ์˜ ๋ง๋‹จ ์ง์›์— ๋Œ€ํ•ด ๋Œ€๊ธฐํ•˜๋Š” ์—…๋ฌด๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค.

์ œ์ผ ์™ผ์ชฝ์˜ ๋ง๋‹จ ์ง์›๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅํ˜•์‹

์™„๋ฃŒ๋œ ์—…๋ฌด๋“ค์˜ ๋ฒˆํ˜ธ ํ•ฉ์„ ์ •์ˆ˜๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

๋ฌธ์ œ ๋งํฌ :

 

 

 

์ถœ์ฒ˜

PlanB์˜ ๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๋ง ๋ธ”๋กœ๊ทธ: Tree