Tree

1. Tree์˜ ์ •์˜

  • ๋‹จ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์˜ ํ•œ ๊ตฌ์กฐ๋กœ, ํ•˜๋‚˜์˜ ๋ฟŒ๋ฆฌ๋กœ๋ถ€ํ„ฐ ๊ฐ€์ง€๊ฐ€ ์‚ฌ๋ฐฉ์œผ๋กœ ๋ป—์€ ํ˜•ํƒœ๊ฐ€ ๋‚˜๋ฌด์™€ ๋‹ฎ์Œ

  • ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋กœ ์•„๋ž˜์— ์žˆ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฐ์ดํ„ฐ์— ํ•œ ๊ฐœ์˜ ๊ฒฝ๋กœ์™€ ํ•˜๋‚˜์˜ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์—ฐ๊ฒฐ๋œ ๊ณ„์ธต์  ์ž๋ฃŒ๊ตฌ์กฐ

  • ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๋‚˜์—ด์‹œํ‚จ ์„ ํ˜•๊ตฌ์กฐ๊ฐ€ ์•„๋‹Œ, ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ์•„๋ž˜์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๋น„์„ ํ˜• ๊ตฌ์กฐ

  • ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” ๊ณ„์ธต์ ์œผ๋กœ ํ‘œํ˜„์ด ๋˜๊ณ , ์•„๋ž˜๋กœ๋งŒ ๋ป—์–ด๋‚˜๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ดํด์ด ์—†์Œ

  • ์ฆ‰, ์‚ฌ์ดํด์ด ์—†๋Š” ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Œ

2. Tree์˜ ๊ตฌ์กฐ

  • ๋ฃจํŠธ(Root)๋ผ๋Š” ํ•˜๋‚˜์˜ ๊ผญ์ง“์  ๋ฐ์ดํ„ฐ๋กœ ์‹œ์ž‘ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ **๊ฐ„์„ (Edge)**๋กœ ์—ฐ๊ฒฐ

  • ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ **๋…ธ๋“œ(Node)**๋ผ๊ณ  ํ•˜๋ฉฐ, ๋‘ ๊ฐœ์˜ ๋…ธ๋“œ๊ฐ€ ์ƒํ•˜ ๊ณ„์ธต์œผ๋กœ ์—ฐ๊ฒฐ๋˜๋ฉด ๋ถ€๋ชจ/์ž์‹ ๊ด€๊ณ„๋ฅผ ๋งบ์Œ

  • ์ž์‹์ด ์—†๋Š” ๋…ธ๋“œ๋Š” ๋‚˜๋ฌด์˜ ์žŽ๊ณผ ๊ฐ™๋‹ค๊ณ  ํ•˜์—ฌ **๋ฆฌํ”„ ๋…ธ๋“œ(leaf node)**๋ผ๊ณ  ํ•จ

  • ๊นŠ์ด

    • ๋ฃจํŠธ๋กœ๋ถ€ํ„ฐ ํ•˜์œ„ ๊ณ„์ธต์˜ ํŠน์ • ๋…ธ๋“œ๊นŒ์ง€์˜ ๊นŠ์ด

    • ๋ฃจํŠธ ๊นŠ์ด๋Š” 0

  • ๋ ˆ๋ฒจ

    • ๊ฐ™์€ ๊นŠ์ด๋ฅผ ๊ฐ€์ง„ ๋…ธ๋“œ๋ฅผ ๋ฌถ์–ด ๋ ˆ๋ฒจ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅ

    • ๊นŠ์ด๊ฐ€ 0์ธ ๋ฃจํŠธ์˜ ๋ ˆ๋ฒจ์€ 1

    • ๊ฐ™์€ ๋ ˆ๋ฒจ์— ๋‚˜๋ž€ํžˆ ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ ํ˜•์ œ ๋…ธ๋“œ(Sibling Node)๋ผ๊ณ  ํ•จ

  • ๋†’์ด

    • ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ ๋ฆฌํ”„ ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฃจํŠธ๊นŒ์ง€์˜ ๋†’์ด๋ฅผ ํ‘œํ˜„ ๊ฐ€๋Šฅ

    • ๊ฐ ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ๋†’์ด๋ฅผ 0์œผ๋กœ ๋†“๊ณ , ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ€์žฅ ๋†’์€ ๋†’์ด๊ฐ’์— +1ํ•œ ๊ฐ’์„ ๊ฐ€์ง

  • ์„œ๋ธŒ ํŠธ๋ฆฌ

    • ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ ๋ฃจํŠธ์—์„œ ๋ป—์–ด๋‚˜์˜ค๋Š” ํฐ ํŠธ๋ฆฌ์˜ ๋‚ด๋ถ€์— ํŠธ๋ฆฌ๊ตฌ์กฐ๋ฅผ ๊ฐ–์ถ˜ ์ž‘์€ ํŠธ๋ฆฌ

  • Tree์˜ ์‹ค์‚ฌ์šฉ ์˜ˆ์ œ

  • ์ปดํ“จํ„ฐ์˜ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ, ์กฐ์ง๋„ ๋“ฑ

2. Binary Tree

  • ์ด์ง„ ํŠธ๋ฆฌ์˜ ํŠน์ง•

    • ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ ๋‘ ๊ฐœ์ธ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ํŠธ๋ฆฌ

  • ์ž๋ฃŒ์˜ ์‚ฝ์ž…/์‚ญ์ œ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

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

      • ๊ฐ ๋…ธ๋“œ๊ฐ€ 0๊ฐœ ํ˜น์€ 2๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง

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

      • ์ • ์ด์ง„ํŠธ๋ฆฌ์ด๋ฉด์„œ๋„ ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ์ธ ๊ฒฝ์šฐ. ๋ชจ๋“  ๋ฆฌํ”„ ๋…ธ๋“œ์˜ ๋ ˆ๋ฒจ์ด ๋™์ผํ•˜๊ณ  ๋ชจ๋“  ๋ ˆ๋ฒจ์ด ๊ฐ€๋“ ์ฑ„์›Œ์ ธ ์žˆ์Œ

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

      • ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋…ธ๋“œ๊ฐ€ ๊ฐ€๋“์ฐจ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์˜ ๋…ธ๋“œ๋Š” ์ „๋ถ€ ์ฐจ์žˆ์ง€ ์•Š์•„๋„ ๋˜๋‚˜ ์™ผ์ชฝ์ด ์ฑ„์›Œ์ ธ ์žˆ์–ด์•ผ ํ•จ

3. Binary Search Tree

  • ์ด์ง„ ํƒ์ƒ‰ ์ด๋ž€?

    • ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ ์ค‘์—์„œ ํŠน์ •ํ•œ ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜

    • ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ์ •์ˆ˜์˜ ๋ฐฐ์—ด์„ ๊ฐ™์€ ํฌ๊ธฐ์˜ ๋‘ ๋ถ€๋ถ„ ๋ฐฐ์—ด๋กœ ๋‚˜๋ˆˆ ํ›„, ๋‘ ๋ถ€๋ถ„ ์ค‘ ํƒ์ƒ‰์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์—์„œ๋งŒ ํƒ์ƒ‰ํ•˜๋„๋ก ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•˜์—ฌ ์›ํ•˜๋Š” ๊ฐ’์„ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ

    • ๋ชจ๋“  ์™ผ์ชฝ ์ž์‹์˜ ๊ฐ’์ด ๋ฃจํŠธ๋‚˜ ๋ถ€๋ชจ๋ณด๋‹ค ์ž‘๊ณ , ๋ชจ๋“  ์˜ค๋ฅธ์ชฝ ์ž์‹์˜ ๊ฐ’์ด ๋ฃจํŠธ๋‚˜ ๋ถ€๋ชจ๋ณด๋‹ค ํฐ ๊ฐ’์„ ๊ฐ€์ง

    • ๊ธฐ์กด ์ด์ง„ํŠธ๋ฆฌ๋ณด๋‹ค ํƒ์ƒ‰์ด ๋น ๋ฆ„

    • ํŠธ๋ฆฌ ์•ˆ์— ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์ด ์—†๋”๋ผ๋„ ์ตœ๋Œ€ h๋ฒˆ(ํŠธ๋ฆฌ ๋†’์ด)๋งŒํผ์˜ ์—ฐ์‚ฐ ๋ฐ ํƒ์ƒ‰์ด ์ง„ํ–‰๋จ

4. Tree Traversal

  • ํŠธ๋ฆฌ ์ˆœํšŒ ๋ฐฉ๋ฒ•์˜ ๊ณตํ†ต์ 

    • ๋ชจ๋‘ ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•  ๋•Œ ์™ผ์ชฝ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์กฐํšŒ

  • ํŠธ๋ฆฌ ์ˆœํšŒ ๋ฐฉ๋ฒ•

    • ์ „์œ„ ์ˆœํšŒ (preorder traverse)

      • ๋ฃจํŠธ์—์„œ ์‹œ์ž‘ํ•ด ์™ผ์ชฝ์˜ ๋…ธ๋“œ๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋‘˜๋Ÿฌ๋ณธ ๋’ค, ์™ผ์ชฝ์˜ ๋…ธ๋“œ ํƒ์ƒ‰์ด ๋๋‚˜๋ฉด ์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰

      • ์ „์œ„ ์ˆœํšŒ๋Š” ์ฃผ๋กœ ํŠธ๋ฆฌ๋ฅผ ๋ณต์‚ฌํ•  ๋•Œ ์‚ฌ์šฉ

    • ์ค‘์œ„ ์ˆœํšŒ (inorder traverse)

      • ์ œ์ผ ์™ผ์ชฝ ๋์— ์žˆ๋Š” ๋…ธ๋“œ๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์—ฌ, ๋ฃจํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์™ผ์ชฝ์— ์žˆ๋Š” ๋…ธ๋“œ์˜ ์ˆœํšŒ๊ฐ€ ๋๋‚˜๋ฉด ๋ฃจํŠธ๋ฅผ ๊ฑฐ์ณ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๋…ธ๋“œ๋กœ ์ด๋™ํ•˜์—ฌ ๋งˆ์ € ํƒ์ƒ‰

      • ์ค‘์œ„ ์ˆœํšŒ๋Š” ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์˜ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์‚ฌ์šฉ

    • ํ›„์œ„ ์ˆœํšŒ (postorder traverse)

      • ์ œ์ผ ์™ผ์ชฝ ๋์— ์žˆ๋Š” ๋…ธ๋“œ๋ถ€ํ„ฐ ์ˆœํšŒํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์—ฌ, ๋ฃจํŠธ๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•ด ์ˆœํšŒํ•œ ๋’ค, ์ œ์ผ ๋งˆ์ง€๋ง‰์— ๋ฃจํŠธ๋ฅผ ๋ฐฉ๋ฌธ

      • ํ›„์œ„ ์ˆœํšŒ๋Š” ํŠธ๋ฆฌ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์‚ฌ์šฉ. ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋จผ์ € ์‚ญ์ œ๋˜์–ด์•ผ ์ƒ์œ„ ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ

    • ๋ ˆ๋ฒจ ์ˆœํšŒ (levelorder traverse)

      • ๋ฃจํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋Š” ๊ธฐ์ค€์œผ๋กœ ์ˆœํšŒ๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํŠธ๋ฆฌ์˜ ๋ ˆ๋ฒจ ๊ธฐ์ค€์œผ๋กœ ๋…ธ๋“œ๋“ค์„ ๋ฐฉ๋ฌธ

      • ๋ฃจํŠธ ๋…ธ๋“œ์˜ ๋ ˆ๋ฒจ์ด 1์ด๋ผ๊ณ  ํ–ˆ์„ ๋•Œ ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐˆ์ˆ˜๋ก ๋ ˆ๋ฒจ์€ ์ฆ๊ฐ€ํ•˜๋Š” ํŠน์ง•

      • ๋™์ผํ•œ ๋ ˆ๋ฒจ์— ์—ฌ๋Ÿฌ ๋…ธ๋“œ๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ ์ˆœ์„œ๋กœ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธ

Last updated