Skip to content

Latest commit

ย 

History

History
67 lines (36 loc) ยท 3.66 KB

[Data Structure] Tree.md

File metadata and controls

67 lines (36 loc) ยท 3.66 KB

Tree

  1. ํŠธ๋ฆฌ์˜ ๊ฐœ๋….
  2. ํŠธ๋ฆฌ์˜ ๊ตฌ์„ฑ ์š”์†Œ.
  3. ํŠธ๋ฆฌ์˜ ์ข…๋ฅ˜.

ํŠธ๋ฆฌ์˜ ๊ฐœ๋…

ํŠธ๋ฆฌ๋ผ๋Š” ์ด๋ฆ„์ด ๋‚˜์˜จ ์ด์œ ๋Š” ์‹ค์ œ ๋‚˜๋ฌด๋ฅผ ๊ฑฐ๊พธ๋กœ ์„ธ์›Œ๋†“์€ ๋“ฏํ•œ ๋ชจ์–‘์ด๋ผ์„œ ํŠธ๋ฆฌ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

img

์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ๋ฐฐ์—ด์ด๋‚˜ ๋ฆฌ์ŠคํŠธ ๋“ฑ๋„ ์กด์žฌํ•˜์ง€๋งŒ, ํŠธ๋ฆฌ๊ฐ€ ๋‚˜์˜จ ์ด์œ ๋Š” ๋ญ˜๊นŒ?

์ผ๋ฐ˜ ๋ฐฐ์—ด์—์„œ ์‚ฝ์ž…์ด๋‚˜ ์‚ญ์ œ๋ฅผ ํ•˜๋Š”๋ฐ O(N)์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ์›์†Œ์— ์‚ฝ์ž…ํ•˜๋Š” ๊ฒฝ์šฐ ๋‚˜๋จธ์ง€ ๋ชจ๋“  ์š”์†Œ๋“ค์„ ํ•œ ์นธ์”ฉ ๋’ค๋กœ ๋ฏธ๋ค„์•ผ ํ•˜๋ฏ€๋กœ ์ตœ์•…์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ O(N)์ด ๋‚˜์˜จ๋‹ค. ํ•˜์ง€๋งŒ, ํŠธ๋ฆฌ๋Š” ํŽธํ–ฅ ํŠธ๋ฆฌ๊ฐ€ ์•„๋‹Œ ์ด์ƒ ์ผ๋ฐ˜์ ์ธ ํŠธ๋ฆฌ์—์„œ๋Š” O(log N) ์ •๋„์˜ ์‹œ๊ฐ„์œผ๋กœ ์ค„์—ฌ์ง„๋‹ค.

๋˜ํ•œ ํŠธ๋ฆฌ๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๋Š” ๊ฒฝ์šฐ์— ๊ต‰์žฅํžˆ ์ข‹๋‹ค.

img

ํšŒ์‚ฌ์˜ ์กฐ์ง๋„๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด, ๋งจ ์œ„์— ํšŒ์žฅ๋‹˜, ์‚ฌ์žฅ๋‹˜์ด ์žˆ๊ณ , ๋ถ€์„œ๋ณ„, ํŒ€๋ณ„๋กœ ๊ฐ๊ฐ ํŠธ๋ฆฌ๊ฐ€ ์ƒ๊ธธ ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ, ์›ํ•˜๋Š” ๋ถ€์„œ๋ฅผ ํƒ€๊ณ  ๋‚ด๋ ค๊ฐ€๊ธฐ๋งŒ ํ•˜๋ฉด ๋˜๋ฏ€๋กœ ๋‹ค๋ฅธ ์ž๋ฃŒ ๊ตฌ์กฐ๋ณด๋‹ค ์ฐพ๊ธฐ๊ฐ€ ํ›จ์”ฌ ์‰ฌ์šธ ๊ฒƒ์ด๋‹ค.

ํŠน์ง•

  • Tree๋Š” Stack์ด๋‚˜ Queue์™€ ๊ฐ™์ด ์„ ํ˜• ๊ตฌ์กฐ๊ฐ€ ์•„๋‹Œ ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.
  • ๊ณ„์ธต์  ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.
  • ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋…ธ๋“œ๋Š” ๋‹จ ํ•˜๋‚˜์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๋งŒ์„ ๊ฐ–๋Š”๋‹ค.

[ํŠธ๋ฆฌ์˜ ๊ตฌ์„ฑ ์š”์†Œ]

img

  • Node : ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ๊ฐ์˜ ์š”์†Œ.
  • Edge : ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋“œ์™€ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์„ .
  • Root Node : ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ ์ตœ์ƒ์œ„์— ์žˆ๋Š” ๋…ธ๋“œ.
  • Terminal Node : ํ•˜์œ„์— ๋‹ค๋ฅธ ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๋…ธ๋“œ.
  • Internal Node : ๋‹จ๋ง ๋…ธ๋“œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋…ธ๋“œ๋กœ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ํฌํ•จํ•œ๋‹ค.

[Binary Tree(์ด์ง„ ํŠธ๋ฆฌ)]

img

  • ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๋‘ ๊ฐœ์˜ ์„œ๋ธŒ ํŠธ๋ฆฌ๋กœ ๋‚˜๋‰˜์–ด ์ง„๋‹ค. (๋…ธ๋“œ๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค.) ๋‚˜๋‰˜์–ด์ง„ ๋‘ ์„œ๋ธŒ ํŠธ๋ฆฌ๋„ ๋ชจ๋‘ ์ด์ง„ ํŠธ๋ฆฌ์–ด์•ผ ํ•œ๋‹ค.
  • ๊ฐ ์ธต๋ณ„๋กœ ์ˆซ์ž๋ฅผ ๋งค๊ฒจ์„œ ์ด๋ฅผ ํŠธ๋ฆฌ์˜ ๋ ˆ๋ฒจ์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋ ˆ๋ฒจ์€ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ณ  ๋ฃจํŠธ ๋…ธ๋“œ์˜ ๋ ˆ๋ฒจ์€ 1์ด๋‹ค. ํŠธ๋ฆฌ์˜ ์ตœ๊ณ  ๋ ˆ๋ฒจ์„ ๊ฐ€๋ฆฌ์ผœ ํŠธ๋ฆฌ์˜ ๋†’์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • ์ข…๋ฅ˜
    • Full Binary Tree(ํฌํ™” ์ด์ง„ ํŠธ๋ฆฌ) : ๋ชจ๋“  ๋ ˆ๋ฒจ์ด ๊ฝ‰ ์ฐฌ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
      • ๋ ˆ๋ฒจ ๋ณ„๋กœ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ 1,2,4,8,16 ... ์œผ๋กœ ๋Š˜์–ด๋‚œ๋‹ค. ๋”ฐ๋ผ์„œ ์ผ๋ฐ˜์ ์ธ ์ด์ง„ํŠธ๋ฆฌ์—์„œ ๊ฐ ๋ ˆ๋ฒจ ๋ณ„ ์ตœ๋Œ€ ๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๋Š” 2^(k - 1)์ด ๋œ๋‹ค.
      • ๋ ˆ๋ฒจ ๋ณ„ ๋…ธ๋“œ๋Š” ๊ณต๋น„๊ฐ€ 2์ธ ๋“ฑ๋น„ ์ˆ˜์—ด์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋“ฑ๋น„์ˆ˜์—ด์˜ ํ•ฉ์œผ๋กœ ์ƒ๊ฐํ•˜๋ฉด ๋†’์ด๊ฐ€ h์ธ ์ด์ง„ํŠธ๋ฆฌ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋…ธ๋“œ ์ˆ˜๋Š” 2^h - 1์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Complete Binary Tree(์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ) : ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ˆœ์„œ๋Œ€๋กœ ์ฐจ๊ณก ์ฐจ๊ณก ์ฑ„์›Œ์ง„ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
      • ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์‚ฝ์ž…ํ•˜๋Š” ํŠธ๋ฆฌ์ด๋‹ค. ์™ผ์ชฝ์ด ๋น„์–ด์žˆ๊ณ  ์˜ค๋ฅธ์ชฝ์ด ๋“ค์–ด๊ฐ€์žˆ๋Š” ํŠธ๋ฆฌ๋Š” ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋‹ค.
    • Skewed Binary Tree(ํŽธํ–ฅ ์ด์ง„ ํŠธ๋ฆฌ) : ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๋ถ€๋ชจ์˜ ์™ผ์ชฝ ์ž์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์™ผ์ชฝ์œผ๋กœ ํŽธํ–ฅ๋˜์–ด ์žˆ๊ฑฐ๋‚˜ ๋ฐ˜๋Œ€๋กœ ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๋ถ€๋ชจ์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํŽธํ–ฅ๋˜์–ด ์žˆ๋Š” ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ๋งํ•œ๋‹ค.

์ฐธ๊ณ