Skip to content

Latest commit

ย 

History

History
105 lines (61 loc) ยท 2.71 KB

File metadata and controls

105 lines (61 loc) ยท 2.71 KB

ํŠธ๋ฆฌ ( Tree )

๊ทธ๋ž˜ํ”„์˜ ์ผ์ข…์œผ๋กœ, ์—ฌ๋Ÿฌ ๋…ธ๋“œ๊ฐ€ ํ•œ๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์—†๋Š” ๊ตฌ์กฐ

์„ ํ˜•๊ตฌ์กฐ๊ฐ€ ์•„๋‹Œ (๋น„์„ ํ˜•), ๋ถ€๋ชจ์ž์‹์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋Š” ๊ณ„์ธตํ˜• ๊ตฌ์กฐ

๊ฐœ๋…


  • Node (๋…ธ๋“œ) : ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ๋Š” ๊ฐ๊ฐ์˜ ์š”์†Œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

  • Edge (๊ฐ„์„ ) : ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋“œ์™€ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์„ ์„ ์˜๋ฏธํ•œ๋‹ค.

  • Root Node (๋ฃจํŠธ ๋…ธ๋“œ) : ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ ์ตœ์ƒ์œ„์— ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

  • Terminal Node ( = leaf Node, ๋‹จ๋ง ๋…ธ๋“œ) : ํ•˜์œ„์— ๋‹ค๋ฅธ ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๋…ธ๋“œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

  • Internal Node (๋‚ด๋ถ€๋…ธ๋“œ, ๋น„๋‹จ๋ง ๋…ธ๋“œ) : ๋‹จ๋ง ๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋…ธ๋“œ๋กœ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ํฌํ•จํ•œ๋‹ค.


์ข…๋ฅ˜


- Binary tree  : ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์ž์‹ ๋…ธ๋“œ๋ฅผ ์ตœ๋Œ€ 2๊ฐœ์”ฉ๋งŒ ๊ฐ–๋Š” ํŠธ๋ฆฌ

- Ternary tree : ์ž์‹ ๋…ธ๋“œ๋ฅผ 2๊ฐœ ์ด์ƒ ๊ฐ–๊ณ  ์žˆ๋Š” ํŠธ๋ฆฌ

โœ” ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ (Complete binary tree)

๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์„œ๋ธŒํŠธ๋ฆฌ์˜ ๋ ˆ๋ฒจ์ด ๊ฐ™์•„์•ผ ํ•˜๊ณ , ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์€ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฑ„์›Œ์ ธ ์žˆ์–ด์•ผ ํ•œ๋‹ค.


โœ” ์ • ์ด์ง„ ํŠธ๋ฆฌ (Full binary tree)

์ž์‹ ๋…ธ๋“œ๊ฐ€ ์—†๊ฑฐ๋‚˜ 2๊ฐœ์ธ ํŠธ๋ฆฌ


โœ” ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ (Perfect binary tree)

๋นˆ ๊ณต๊ฐ„์ด ์—†์ด ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ 2๊ฐœ์˜ ์ž์‹์„ ๊ฐ–๊ณ  ์žˆ๋Š” ํŠธ๋ฆฌ


โœ” ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ (Binary search tree)

๋ถ€๋ชจ๋…ธ๋“œ ๋ณด๋‹ค ์ž‘์€ ๊ฐ’์˜ ๋…ธ๋“œ๋Š” ์™ผ์ชฝ child, ํฐ ๊ฐ’์˜ ๋…ธ๋“œ๋Š” ์˜ค๋ฅธ์ชฝ child๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” tree.

key๊ฐ’์˜ ์ค‘๋ณต์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.


Binary Tree ์ˆœํšŒ ๋ฐฉ๋ฒ•


- ์ „์œ„ ์ˆœํšŒ : root๋ฅผ ์ œ์ผ ๋จผ์ € ์ˆœํšŒ
- ์ค‘์œ„ ์ˆœํšŒ : root๋ฅผ ์ค‘๊ฐ„์— ์ˆœํšŒ
- ํ›„์œ„ ์ˆœํšŒ : root๋ฅผ ์ œ์ผ ๋‚˜์ค‘์— ์ˆœํšŒ

์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ ( Binary Search Tree )


key๊ฐ’์€ ์ค‘๋ณต๋˜์ง€ ์•Š์œผ๋ฉฐ, ๋ถ€๋ชจ์˜ ํ‚ค๊ฐ€ ์™ผ์ชฝ ์ž์‹๋ณด๋‹ค๋Š” ํฌ๋ฉฐ, ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋ณด๋‹ค๋Š” ์ž‘๋‹ค.

์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋„ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์ด๋‹ค.

ํƒ์ƒ‰ ์—ฐ์‚ฐ์€ O(logn)์„ ๊ฐ–์œผ๋ฉฐ (์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด O(h), h๋Š” ๋†’์ด ), ํ•œ์ชฝ์œผ๋กœ ์น˜์šฐ์ณ์ง„ ํŽธํ–ฅ ํŠธ๋ฆฌ(Skewed Tree)๊ฐ€ ๋˜๋ฉด worst case๋กœ O(n)์„ ๊ฐ–๋Š”๋‹ค.

์ฝ”๋“œ ๋ณด๊ธฐ (c++)


Binary Search Tree์˜ ๋‹จ์ 


๋ฐฐ์—ด๋ณด๋‹ค ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๊ฐ™๊ฒŒ๋˜๋Š” ๋น„ํšจ์œจ์ ์ด ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

โžก Rebalancing ๊ธฐ๋ฒ•์˜ ๋“ฑ์žฅ



Balanced Tree