트리

  • 트리는 싸이클이 없는 무방향 연결 그래프이다.
    • 각 노드에는 최대 하나의 부모 노드가 존재한다.
    • 두 노드 사이에는 유일한 경로가 존재한다.
  • 비선형 구조
    • 원소들 간에 계층관계, 1:N관계를 가진다.
  • 차수 : 노드에 연결된 자식 노드의 수
  • 높이 : 루트에서 노드에 이르는 간선의 수

1. 이진트리

  • 모든 노드가 최대 2개의 서브트리를 갖는 형태의 트리
  • 높이가 h인 이진트리의 최대노드 갯수는 2^(h+1)-1이며, 최소 갯수는 h+1이다.

1-1. 포화 이진트리

모든 레벨에 노드가 포화 상태로 채워져 있는 이진 트리

1-2. 완전 이진 트리

높이가 h이고 노드수가 n일때, 포화 인진 트리의 노드번호 1번부터 n번까지 빈자리가 없는 트리

1-3. 이진 탐색 트리

  • 탐색 작업을 효율적으로 하기 위한 자료구조, 모든 원소는 서로다른 유일한 키를 갖는다.
  • 왼쪽 서브 트리 > 루트노드 < 오른쪽 서브 트리

  • 중회 순회하면 오름차순으로 정렬된 값을 얻어올 수 있다.
트리 : 1차원 배열, 링크드 리스트 순회 : pre, in, post-order 이진트리, 이진탐색트리, 균형이진탐색트리, 허프만트리, 세그먼트트리
그래프 : 인접행렬, 인접리스트, 간선배열 순회 : BFS, DFS 다익스트라, 플로이드, AVL

허프만트리, 세그먼트 트리(인덱스 트리)

  • 완전 이진 트리에 있는 노드 중에서 키 값이 가장 큰 노드나 키 값이 가장 작은 노드를 찾기 위한 자료구조
  • max heap : 루트 노드에 가장 큰 값이 저장된다.
  • min heap : 루트 노드에 가장 작은 값이 저장된다.

  • 힙은 루트에 알고자하는 값을 넣으면서 빼내므로 삭제 연산을 하면 루트부터 일어난다.

  • 힙은 특별한 큐의 구현과 정렬이다.
  • 우선순위 큐를 구현하는 가장 효율적인 방법은 힙을 사용하는 것이다.