728x90

트리 (Trees)

  • 정점(node)과 간선(edge)을 이용하여 데이터의 배치 형태를 추상화한 자료 구조
    • 루트(Root) 노드: 가장 꼭대기에 있는 노드
    • 리프(Leaf) 노드: 더 가지를 치지 않는 노드
    • 내부(Internal) 노드: 루트도 리프도 아닌 노드
  • 노드의 수준 (Level)
    • level 0(root node)부터 시작
    • 간선의 수와 동일
  • 트리의 높이 (Height)
    • 최대 수준(level) + 1
    • 깊이(depth)와 동일
  • 노드의 차수 (Degree)
    • 자식(child)의 수와 동일
    • 리프 노드는 degree가 0

 

이진 트리 (Binary Tree)

  • 모든 노드의 차수(degree)가 2 이하인 트리
  • 재귀적으로 정의할 수 있음
    • 빈 트리(empty tree)이거나
    • 루트 노드 + 왼쪽 서브 트리 + 오른쪽 서브 트리
      • 단, 이때 왼쪽과 오른쪽 서브 트리 또한 이진 트리

 

포화 이진 트리 (Full Binary Tree)

  • 모든 레벨에서 노드들이 모두 채워져 있는 이진 트리
    • 높이가 k이고 노드의 개수가 2^k - 1인 이진 트리

 

완전 이진 트리(Complete Binary Tree)

  • 높이 k인 완전 이진 트리
    • 레벨 k - 2까지는 모든 노드가 2개의 자식을 가진 포화 이진 트리
    • 레벨 k - 1에서는 왼쪽부터 노드가 차례로 채워져 있는 이진 트리

 

출처: 프로그래머스 스쿨 17강: 트리(Trees)

 

이진 탐색 트리 (Binary Search Trees)

  • 모든 노드에 대해서
    • 왼쪽 서브 트리에 있는 데이터는 모두 현재 노드의 값보다 작고
    • 오른쪽 서브 트리에 있는 데이터는 모두 현재 노드의 값보다 큰
  • 성질을 만족하는 이진 트리
    • 중복되는 데이터 원소는 없는 것으로 가정
  • 이진 탐색과의 비교
    • 장점: 데이터 원소의 추가, 삭제가 용이
    • 단점: 공간 소요가 큼, O(log n)의 탐색 복잡도를 가지나 항상 그런 것은 아님

 

출처: 프로그래머스 스쿨 20강: 이진 탐색 트리(Binary Search Trees)
728x90

'KDT AI 2nd (Grepp)' 카테고리의 다른 글

[TIL] DAY 5 - 힙(Heap)  (0) 2021.04.23
[TIL] DAY 3 - 스택(Stack), 큐(Queue)  (0) 2021.04.21
[TIL] DAY 2 - 탐색(Search), Big-O Notation  (0) 2021.04.20