Home > Backend > AnD > ๐Ÿ“ฆ[DS,Algorithm] ํŠธ๋ฆฌ(Tree)

๐Ÿ“ฆ[DS,Algorithm] ํŠธ๋ฆฌ(Tree)
DataStructure Algorithm

1๏ธโƒฃ ํŠธ๋ฆฌ(Tree).

ํŠธ๋ฆฌ(Tree) ๋Š” ๊ณ„์ธต์  ๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ, ๋…ธ๋“œ(Node)์™€ ์—์ง€(Edge)๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

ํŠธ๋ฆฌ๋Š” ์‚ฌ์ดํด์ด ์—†๋Š” ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„(Connected Graph)์ด๋ฉฐ, ๊ณ„์ธต์  ๋ฐ์ดํ„ฐ ํ‘œํ˜„์— ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํŠธ๋ฆฌ๋Š” ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ์กฐ์งํ™”์™€ ๊ฒ€์ƒ‰, ๊ณ„์ธต์  ๋ฐ์ดํ„ฐ ํ‘œํ˜„์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

1๏ธโƒฃ ํŠธ๋ฆฌ์˜ ๊ตฌ์„ฑ ์š”์†Œ.

  1. ๋…ธ๋“œ(Node) : ํŠธ๋ฆฌ์˜ ๊ธฐ๋ณธ ๋‹จ์œ„๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

  2. ์—์ง€(Edge) : ๋…ธ๋“œ์™€ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์„ ์œผ๋กœ, ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

  3. ๋ฃจํŠธ(Root) : ํŠธ๋ฆฌ์˜ ์ตœ์ƒ์œ„ ๋…ธ๋“œ๋กœ, ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

  4. ๋ถ€๋ชจ(Parent) : ๋‹ค๋ฅธ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค.

  5. ์ž์‹(Child) : ๋ถ€๋ชจ ๋…ธ๋“œ์— ์˜ํ•ด ๊ฐ€๋ฆฌ์ผœ์ง€๋Š” ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค.

  6. ์žŽ(Leaf) : ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์—†๋Š” ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค.

  7. ๋‚ด๋ถ€ ๋…ธ๋“œ(Internal Node) : ์ž์‹ ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ๋…ธ๋“œ์ž…๋‹ˆ๋‹ค.

  8. ๋ ˆ๋ฒจ(Level) : ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ ํŠน์ • ๋…ธ๋“œ๊นŒ์ง€์˜ ์—์ง€ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

  9. ๋†’์ด(Height) : ํŠธ๋ฆฌ์˜ ์ตœ๋Œ€ ๋ ˆ๋ฒจ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ ํŠธ๋ฆฌ์˜ ํŠน์„ฑ.

  • ๊ณ„์ธต์  ๊ตฌ์กฐ : ํŠธ๋ฆฌ๋Š” ๊ณ„์ธต์  ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์งํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์ดํด ์—†์Œ : ํŠธ๋ฆฌ๋Š” ์‚ฌ์ดํด์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค.
  • ์—ฐ๊ฒฐ์„ฑ : ๋ชจ๋“  ๋…ธ๋“œ๋Š” ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ๋œ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•œ ๊ฐœ์˜ ๋ฃจํŠธ ๋…ธ๋“œ : ํŠธ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๋ฃจํŠธ ๋…ธ๋“œ๋Š” ํŠธ๋ฆฌ์˜ ์‹œ์ž‘์ ์ž…๋‹ˆ๋‹ค.

3๏ธโƒฃ ํŠธ๋ฆฌ์˜ ์ข…๋ฅ˜.

  1. ์ด์ง„ ํŠธ๋ฆฌ(Binary Tree) : ๊ฐ ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ ๋‘ ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค.

  2. ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(Binary Search Tree, BST) : ์ด์ง„ ํŠธ๋ฆฌ์˜ ์ผ์ข…์œผ๋กœ, ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’์ด ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ์ž‘๊ณ , ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’์ด ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ํฐ ํŠน์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

  3. ๊ท ํ˜• ์ด์ง„ ํŠธ๋ฆฌ(Balanced Binary Tree) : AVL ํŠธ๋ฆฌ, ๋ ˆ๋“œ-๋ธ”๋ž™ ํŠธ๋ฆฌ ๋“ฑ๊ณผ ๊ฐ™์ด ํŠธ๋ฆฌ์˜ ๋†’์ด๊ฐ€ ๊ท ํ˜•์„ ์ด๋ฃจ๋„๋ก ์œ ์ง€ํ•˜๋Š” ํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค.

  4. B-ํŠธ๋ฆฌ(B-Tree) : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํŠธ๋ฆฌ๋กœ, ์ž์‹ ๋…ธ๋“œ์˜ ์ˆ˜๊ฐ€ ์ •ํ•ด์ง„ ๋‹ค์ง„ ํŠธ๋ฆฌ(Multiway Tree)์ž…๋‹ˆ๋‹ค.

  5. ํž™(Heap) : ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์˜ ์ผ์ข…์œผ๋กœ, ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ์ž‘์€ ํŠน์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

  6. ํŠธ๋ผ์ด(Trie) : ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ, ์ ‘๋‘์‚ฌ ๊ฒ€์ƒ‰์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

4๏ธโƒฃ ํŠธ๋ฆฌ์˜ ์ฃผ์š” ์—ฐ์‚ฐ.

  1. ์‚ฝ์ž…(Insertion) : ํŠธ๋ฆฌ์— ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  2. ์‚ญ์ œ(Deletion) : ํŠธ๋ฆฌ์—์„œ ๋…ธ๋“œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
  3. ํƒ์ƒ‰(Search) : ํŠธ๋ฆฌ์—์„œ ํŠน์ • ๊ฐ’์„ ์ฐพ์Šต๋‹ˆ๋‹ค.
  4. ์ˆœํšŒ(Traversal) : ํŠธ๋ฆฌ์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•ฉ๋‹ˆ๋‹ค. ์ „์œ„(Preorder), ์ค‘์œ„(Inorder), ํ›„์œ„(Postorder), ๋ ˆ๋ฒจ ์ˆœํšŒ(Level Order) ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค.