coding test

ํŠธ๋ฆฌ๊ตฌ์กฐ

ron_nie 2024. 1. 9. 15:49
728x90

Tree

๐Ÿ’ก ์„œ๋กœ ์—ฐ๊ฒฐ๋œ Node์˜ ๊ณ„์ธตํ˜• ์ž๋ฃŒ๊ตฌ์กฐ๋กœ์จ, root์™€ ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„์˜ subtree๋กœ ๊ตฌ์„ฑ๋จ

ํŠธ๋ฆฌ ๊ด€๋ จ ์šฉ์–ด

  • ๋…ธ๋“œ : ๊ตฌ์„ฑ ์š”์†Œ
  • ๊ฐ„์„  (Edge) : ๋…ธ๋“œ๊ฐ„์— ์—ฐ๊ฒฐ๋œ ์„ 
  • ๋ฃจํŠธ ๋…ธ๋“œ(Root) : ํŠธ๋ฆฌ์˜ ์‹œ์ž‘์ 
  • ๋ฆฌํ”„ ๋…ธ๋“œ(Leaf) : ํŠธ๋ฆฌ์˜ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ
  • ์ž์‹ ๋…ธ๋“œ(child), ๋ถ€๋ชจ ๋…ธ๋“œ(parent), ํ˜•์ œ ๋…ธ๋“œ(sibiling)
  • ์ฐจ์ˆ˜ (degree) : ๊ฐ ๋…ธ๋“œ ๊ฐ–๋Š” ์ž์‹์˜ ์ˆ˜, ๋ชจ๋“  ๋…ธ๋“œ์˜ ์ฐจ์ˆ˜๊ฐ€ n๊ฐœ ์ดํ•˜์ธ ํŠธ๋ฆฌ๋ฅผ n์ง„ ํŠธ๋ฆฌ๋ผ๊ณ  ํ•œ๋‹ค
  • ์กฐ์ƒ (ancestor) : ์œ„์ชฝ์œผ๋กœ ๊ฐ„์„ ์„ ๋”ฐ๋ผ๊ฐ€๋ฉด ๋งŒ๋‚˜๋Š” ๋ชจ๋“  ๋…ธ๋“œ
  • ์ž์† (descendant) : ์•„๋ž˜์ชฝ์œผ๋กœ ๊ฐ„์„ ์„ ๋”ฐ๋ผ๊ฐ€๋ฉด ๋งŒ๋‚˜๋Š” ๋ชจ๋“  ๋…ธ๋“œ
  • ๋†’์ด (height) : ๋ฃจํŠธ ๋…ธ๋“œ์—์„œ ๊ฐ€์žฅ ๋ฉ€๋ฆฌ์žˆ๋Š” ๋ฆฌํ”„ ๋…ธ๋“œ ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ, ์ฆ‰ ๋ฆฌํ”„ ๋…ธ๋“œ์ค‘์— ์ตœ๋Œ€ ๋ ˆ๋ฒจ ๊ฐ’
  • ์„œ๋ธŒํŠธ๋ฆฌ (subtree) : ํŠธ๋ฆฌ์˜ ์–ด๋–ค ๋…ธ๋“œ๋ฅผ ๋ฃจํŠธ๋กœ ํ•˜๊ณ , ๊ทธ ์ž์†์œผ๋กœ ๊ตฌ์„ฑ๋œ ํŠธ๋ฆฌ

ํ˜„์žฌ ์œ„์˜ ๊ทธ๋ฆผ์€ 2์ง„ํŠธ๋ฆฌ์ž„

Binary Tree

์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์ฐจ์ˆ˜๊ฐ€ 2๊ฐœ ์ดํ•˜์ธ ํŠธ๋ฆฌ๋ฅผ ์ด์•ผ๊ธฐํ•œ๋‹ค

์ฝ”ํ…Œ์—์„œ ๊ฐ€์žฅ ํ™œ์šฉ์ด ๋งŽ์ด ๋œ๋‹ค

Complete Binary Tree

์™„์ „ 2์ง„ํŠธ๋ฆฌ

๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ ˆ๋ฒจ์ด ์ฐจ์ˆ˜๊ฐ€ 2๋กœ ๊ฝ‰๊ฝ‰ ์ฑ„์›Œ์ ธ ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค

๊ฝ‰๊ฝ‰ ์ฑ„์›Œ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŒ์•ฝ์— ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์œ„์˜ ๊ทธ๋ฆผ ์ˆซ์ž์ฒ˜๋Ÿผ ์ฐจ๋ก€์ฐจ๋ก€ ๋„ฃ์–ด์•ผํ•œ๋‹ค

๋…ธ๋“œ์˜ ๊ตฌํ˜„

๋…ธ๋“œ ๊ตฌํ˜„ํ•˜๊ธฐ

class Node:
  def __init__(self):
    self.value = 0
    self.left_child = None
    self.right_child = None

2์ง„ํŠธ๋ฆฌ ๊ตฌํ˜„

class Node:
  def __init__(self, value = 0, left = None, right = None):
    self.value = 0
    self.left = left
    self.right = right

class BinaryTree:
  def __init__(self):
    self.root = None # ๋ฃจํŠธ ๋งŒ๋“ค์–ด์ฃผ๊ธฐ
    
bt = BinaryTree()
bt.root = Node(value=1)
bt.root.left = Node(value=2)
bt.root.right = Node(value=3)
bt.root.left.left = Node(value=4)
bt.root.left.right = Node(value=5)
bt.root.right.right = Node(value=6)

์ด ์ฝ”๋“œ๋ฅผ ํŠธ๋ฆฌ๊ตฌ์กฐ ๊ทธ๋ฆผ์œผ๋กœ ๊ทธ๋ ค๋ณด๋ฉด

๋ฐ˜์‘ํ˜•