๐Ÿšง

ํŠธ๋ฆฌ(Tree)

purpplee 2021. 11. 23. 09:47

ํŠธ๋ฆฌ๋ž€?

๋ฐฐ์—ด, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ, ์Šคํƒ, ํ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ•œ ์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๊ฒƒ ๊ฐ™์€ ํ˜•ํƒœ๋ผ ํ•ด์„œ ์„ ํ˜• ๊ตฌ์กฐ๋ผ๊ณ  ํ•œ๋‹ค. ํŠธ๋ฆฌ๋Š” ๋ถ€๋ชจ์™€ ์ž์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ณ„์ธตํ˜• ๊ตฌ์กฐ๋‹ค. ๋งˆ์น˜ ๊ฐ€๊ณ„๋„๊ฐ™์€ ๋ชจ์–‘์ƒˆ๋ฅผ ์ง€๋‹Œ๋‹ค. ๋งจ ์œ„์— ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ๋ฃจํŠธ(root) ๋ผ๊ณ  ๋ถ€๋ฅด๊ณ , ๋งจ ์•„๋ž˜ ์žˆ๋Š” ๋…ธ๋“œ๋“ค์„ ๋ฆฌํ”„(leaf) ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด์ฒ˜๋Ÿผ ๋…ธ๋“œ๋“ค์ด ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ํšจ๊ณผ์ ์ด๋‹ค.

 

์ด์ง„ ํŠธ๋ฆฌ

๋ถ€๋ชจ ๋…ธ๋“œ๋“ค์ด ์ตœ๋Œ€ 2๊ฐœ์˜ ์ž์‹๋งŒ์„ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ๋ฅผ ์ด์ง„ ํŠธ๋ฆฌ(binary tree) ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. 3๊ฐœ ์ด์ƒ์€ Tenary Tree ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด์ง„ํŠธ๋ฆฌ๋Š” ๊ตฌํ˜„ํ•˜๊ธฐ๋„ ์‰ฌ์›Œ์„œ ๋‹ค์–‘ํ•œ ๊ณณ์—์„œ ์ •๋ง ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋‹ˆ ์ž˜ ์•Œ์•„๋‘๋ฉด ์ข‹๋‹ค.

 

์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ

๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์„ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋‘ ์ฑ„์›Œ์ ธ ์žˆ์œผ๋ฉฐ, ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์€ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฑ„์›Œ์ ธ ์žˆ๋Š” ํŠธ๋ฆฌ๋ฅผ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(complete binary tree) ๋ผ๊ณ  ํ•œ๋‹ค.

 

์ • ์ด์ง„ ํŠธ๋ฆฌ(Full Binary Tree)

์ž์‹์„ ๊ฐ€์ง€๋ ค๋ฉด ๋‘๊ฐœ๋ฅผ ๊ฐ€์ง€๊ณ , ์•„๋‹ˆ๋ผ๋ฉด ์•„์˜ˆ ์•ˆ ๊ฐ€์ง€๋Š” ํŠธ๋ฆฌ๋‹ค.

 

ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ(Perfect Binary Tree)

๋ ˆ๋ฒจ๋„ ๋งž๊ณ  ๋ชจ๋‘ ๋‘ ๊ฐœ์˜ ์ž์‹์„ ๊ฐ€์ง„ ํŠธ๋ฆฌ๋‹ค. ๋ ˆ๋ฒจ์ด n ์ด๋ผ๋ฉด ํŠธ๋ฆฌ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋Š” ๋ฃจํŠธ ๋…ธ๋“œ๋งŒ ์žˆ๋Š” 1๋ ˆ๋ฒจ์„ ์ œ์™ธํ•˜๊ณ  ์ „๋ถ€ 2์˜ n์Šน๊ฐœ๋‹ˆ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

$$ 2^{n}-1 $$

 

์ด์ง„ ํŠธ๋ฆฌ ์ˆœํšŒ

์ด์ง„ ํŠธ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ Left -> Right ์ˆœ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ณ , ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์ œ์ผ ๋จผ์ € ๋ณด๋Š”์ง€, ์ค‘๊ฐ„์— ๋ณด๋Š”์ง€, ์ œ์ผ ๋‚˜์ค‘์— ๋ณด๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค. ๋ฃจํŠธ ๋…ธ๋“œ๋Š” ๊ฒ€์ƒ‰ํ•˜๋Š” ์ˆœ๊ฐ„์˜ ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋ฃจํŠธ, ์ฆ‰ ์ž๊ธฐ ์ž์‹ ์œผ๋กœ ๋ณธ๋‹ค.

 

์ค‘์œ„ ์ˆœํšŒ(Inorder)

Left -> Root - Right ๋ฅผ ๋ฐ˜๋ณต

 

์ „์œ„ ์ˆœํšŒ(Preorder)

Root -> Left -> Right ๋ฅผ ๋ฐ˜๋ณต

 

ํ›„์œ„ ์ˆœํšŒ(Postorder)

Left -> Right -> Root ๋ฅผ ๋ฐ˜๋ณต

๋ฐ˜์‘ํ˜•