์ž๋ฃŒ๊ตฌ์กฐ

[์ž๋ฃŒ๊ตฌ์กฐ] Tree

quedevel 2023. 3. 26. 16:48
728x90
๋ฐ˜์‘ํ˜•

๐ŸŽฏ Tree


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


Tree์˜ ์šฉ์–ด


แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-03-26 แ„‹แ…ฉแ„’แ…ฎ 4 25 15
  • ๋ฃจํŠธ๋…ธ๋“œ : ํŠธ๋ฆฌ์˜ ์ตœ์ƒ์œ„์— ์žˆ๋Š” ๋…ธ๋“œ [A]
  • ์ž์‹๋…ธ๋“œ : ๋…ธ๋“œ ํ•˜์œ„์— ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ
    [B,C,D]๋Š” [A]์˜ ์ž์‹๋…ธ๋“œ
  • ๋ถ€๋ชจ๋…ธ๋“œ : ๋…ธ๋“œ์˜ ์ƒ์œ„์— ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ
    [A]๋Š” [B,C,D]์˜ ๋ถ€๋ชจ๋…ธ๋“œ
  • ์ฐจ์ˆ˜(Degree) : ์ž์‹๋…ธ๋“œ์˜ ์ˆ˜
    [A]์˜ Degree๋Š” 3
  • ์ดํŒŒ๋ฆฌ๋…ธ๋“œ(Leaf) : ์ž์‹์ด ์—†๋Š” ๋…ธ๋“œ(= ๋‹จ๋ง๋…ธ๋“œ : Terminal Node)
    [K,L,F,M,N,I,O,P]
  • ํ˜•์ œ๋…ธ๋“œ : ๋™์ผํ•œ ๋ถ€๋ชจ๋ฅผ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ
    [B,C,D]๋Š” ๋ถ€๋ชจ๊ฐ€ [A]์ธ ํ˜•์ œ๋…ธ๋“œ
  • ์กฐ์ƒ๋…ธ๋“œ : ๋ฃจํŠธ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฒฝ๋กœ์ƒ์— ์žˆ๋Š” ๋ชจ๋“ 
    ๋…ธ๋“œ๋“ค์˜ ์ง‘ํ•ฉ
    [P]์˜ ์กฐ์ƒ๋…ธ๋“œ๋Š” [J,D,A]
  • ํ›„์†๋…ธ๋“œ : ๋…ธ๋“œ ์•„๋ž˜๋กœ ๋งค๋‹ฌ๋ฆฐ ๋ชจ๋“  ๋…ธ๋“œ๋“ค์˜ ์ง‘ํ•ฉ
    [H,I,N]์€ [C]์˜ ์ž์†
  • ์„œ๋ธŒํŠธ๋ฆฌ : ๋…ธ๋“œ ์ž์‹ ๊ณผ ํ›„์†๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ํŠธ๋ฆฌ
    [C]๋ฅผ ๋ฃจํŠธ๋…ธ๋“œ๋กœ ํ•˜๋Š” ์„œ๋ธŒํŠธ๋ฆฌ๋Š” [C]์™€ [C]์˜
    ์ž์†๋…ธ๋“œ๋“ค๋กœ ๊ตฌ์„ฑ๋œ ํŠธ๋ฆฌ
  • ๋ ˆ๋ฒจ : ๋ฃจํŠธ๋…ธ๋“œ(๋ ˆ๋ฒจ1)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์•„๋ž˜๋กœ ํ•œ ์ธต์”ฉ
    ๋ ˆ๋ฒจ์ด 1์”ฉ ์ฆ๊ฐ€
  • ๋†’์ด : ํŠธ๋ฆฌ์˜ ์ตœ๋Œ€ ๋ ˆ๋ฒจ ๋†’์ด 4
  • ํ‚ค : ํƒ์ƒ‰์— ์‚ฌ์šฉ๋˜๋Š” ๋…ธ๋“œ์— ์ €์žฅ๋œ ์ •๋ณด

Tree์˜ ์ˆœํšŒ


ํŠธ๋ฆฌ์˜ ์ˆœํšŒ(Traversal)๋ž€, Tree์˜ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ํ•œ ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. Tree๋ฅผ ์ˆœํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค: ๊นŠ์ด ์šฐ์„  ์ˆœํšŒ(DFS: Depth-First Search)์™€ ๋„ˆ๋น„ ์šฐ์„  ์ˆœํšŒ(BFS: Breadth-First Search)์ž…๋‹ˆ๋‹ค.

  1. ๊นŠ์ด ์šฐ์„  ์ˆœํšŒ (DFS)
    • ๊นŠ์ด ์šฐ์„  ์ˆœํšŒ๋Š”, Tree์˜ ์ตœ๋Œ€ ๊นŠ์ด๊นŒ์ง€ ๋‚ด๋ ค๊ฐ€์„œ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊นŠ์ด ์šฐ์„  ์ˆœํšŒ๋Š” ๋‹ค์‹œ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค: ์ „์œ„ ์ˆœํšŒ(Preorder Traversal), ์ค‘์œ„ ์ˆœํšŒ(Inorder Traversal), ํ›„์œ„ ์ˆœํšŒ(Postorder Traversal)์ž…๋‹ˆ๋‹ค.
  1. ๋„ˆ๋น„ ์šฐ์„  ์ˆœํšŒ (BFS)
    • ๋„ˆ๋น„ ์šฐ์„  ์ˆœํšŒ๋Š”, ๋ ˆ๋ฒจ ์ˆœ์„œ๋Œ€๋กœ Tree๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ๋ถ€ํ„ฐ ํ•œ ๋ ˆ๋ฒจ์”ฉ ๋‚ด๋ ค๊ฐ€๋ฉด์„œ ํƒ์ƒ‰ํ•˜๋ฉฐ, ๊ฐ™์€ ๋ ˆ๋ฒจ์˜ ๋…ธ๋“œ๋“ค์€ ์ขŒ์—์„œ ์šฐ๋กœ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฉ๋ฌธํ•ฉ๋‹ˆ๋‹ค.

  • ์ „์œ„ ์ˆœํšŒ (Preorder Traversal)
แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-03-26 แ„‹แ…ฉแ„’แ…ฎ 4 36 31

์ „์œ„ ์ˆœํšŒ๋Š”, ํ˜„์žฌ ๋…ธ๋“œ๋ฅผ ๊ฐ€์žฅ ๋จผ์ € ํƒ์ƒ‰ํ•˜๊ณ , ๊ทธ ๋‹ค์Œ์— ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.


  • ์ค‘์œ„ ์ˆœํšŒ (Inorder Traversal)
แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-03-26 แ„‹แ…ฉแ„’แ…ฎ 4 40 20

์ค‘์œ„ ์ˆœํšŒ๋Š”, ํ˜„์žฌ ๋…ธ๋“œ์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•œ ๋‹ค์Œ, ํ˜„์žฌ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ค‘์œ„ ์ˆœํšŒ๋Š” ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ(Binary Search Tree)์—์„œ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์ถœ๋ ฅํ•˜๋Š” ๋ฐ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.


  • ํ›„์œ„ ์ˆœํšŒ (Postorder Traversal)
แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-03-26 แ„‹แ…ฉแ„’แ…ฎ 4 41 39

ํ›„์œ„ ์ˆœํšŒ๋Š”, ํ˜„์žฌ ๋…ธ๋“œ์˜ ์ž์‹ ๋…ธ๋“œ๋“ค์„ ๋จผ์ € ํƒ์ƒ‰ํ•œ ๋‹ค์Œ, ๋งˆ์ง€๋ง‰์œผ๋กœ ํ˜„์žฌ ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ํ›„์œ„ ์ˆœํšŒ๋Š” Leaf ๋…ธ๋“œ๋ฅผ ๋จผ์ € ๋ฐฉ๋ฌธํ•˜๋Š” ๋“ฑ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Tree์˜ ํ™œ์šฉ


  1. ๊ณ„์ธต์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ
    • ํŒŒ์ผ ์‹œ์Šคํ…œ, ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ๋“ฑ๊ณผ ๊ฐ™์ด ๊ณ„์ธต์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ํŠธ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ๋งŽ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  2. ๊ฒ€์ƒ‰๊ณผ ์ •๋ ฌ
    • ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋Š” ๊ฒ€์ƒ‰๊ณผ ์ •๋ ฌ์„ ์œ„ํ•ด ๋งค์šฐ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  3. ์ธ๊ณต์ง€๋Šฅ
    • ์˜์‚ฌ๊ฒฐ์ •๋‚˜๋ฌด(decision tree)๋Š” ์ธ๊ณต์ง€๋Šฅ ๋ถ„์•ผ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ฐ์ดํ„ฐ ๋งˆ์ด๋‹, ํŒจํ„ด ์ธ์‹ ๋“ฑ์— ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.
  4. ๋„คํŠธ์›Œํฌ
    • ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”, ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ(IP) ๋“ฑ์—์„œ ํŠธ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  5. ๊ทธ๋ž˜ํ”ฝ์Šค
    • ๊ฒŒ์ž„, ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋“ฑ์—์„œ ์บ๋ฆญํ„ฐ๋‚˜ ๊ฐ์ฒด์˜ ์œ„์น˜๋ฅผ ๊ณ„์ธต์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ํŠธ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  6. ์ปดํŒŒ์ผ๋Ÿฌ
    • ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํŠธ๋ฆฌ ํ˜•ํƒœ์˜ ์ถ”์ƒ ๊ตฌ๋ฌธ ํŠธ๋ฆฌ(Abstract Syntax Tree, AST)๋กœ ๋‚˜ํƒ€๋‚ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.
728x90
๋ฐ˜์‘ํ˜•

'์ž๋ฃŒ๊ตฌ์กฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์ž๋ฃŒ๊ตฌ์กฐ] Hash  (0) 2023.03.27
[์ž๋ฃŒ๊ตฌ์กฐ] Heap  (0) 2023.03.27
[์ž๋ฃŒ๊ตฌ์กฐ] LinkedList  (0) 2023.03.26
[์ž๋ฃŒ๊ตฌ์กฐ] Trie  (0) 2023.03.26
[์ž๋ฃŒ๊ตฌ์กฐ] Stack & Queue  (0) 2023.03.26