Post

트리(Tree) — 자료구조와 개념

트리(Tree) — 자료구조와 개념

1. 트리 개념

트리는 계층적(hierarchical) 구조를 가진 비선형 자료구조입니다. 노드(Node)들이 부모-자식 관계로 연결되어 있습니다.

Image

  • 최상위 노드를 **루트(root)**라고 합니다.
  • 각 노드는 0개 이상의 자식 노드를 가질 수 있습니다.
  • 노드 간에는 유일한 경로가 존재합니다.

2. 용어

  • 루트(root): 트리의 최상위 노드
  • 부모(Parent): 바로 위에 연결된 노드
  • 자식(Child): 바로 아래 연결된 노드
  • 형제(Sibling): 같은 부모를 가진 노드
  • 단말 노드(Leaf): 자식이 없는 노드
  • 간선(Edge): 노드를 연결하는 선
  • 높이(Height): 루트에서 가장 먼 단말 노드까지의 거리
  • 깊이(Depth): 루트에서 특정 노드까지의 거리

3. 종류

  • 이진 트리(Binary Tree): 각 노드가 최대 두 자식을 가짐
  • 이진 탐색 트리(Binary Search Tree, BST): 왼쪽 자식은 부모보다 작고, 오른쪽 자식은 부모보다 큰 값을 가짐
  • 균형 트리(AVL, Red-Black Tree 등): 트리의 높이를 균형 있게 유지하여 탐색 효율 개선
  • 힙(Heap): 부모가 자식보다 크거나 작은 완전 이진 트리
  • 트라이(Trie): 문자열 저장에 특화된 트리 구조

4. 활용 사례

  • 계층적 데이터 표현 (파일 시스템, 조직도)
  • 탐색 및 정렬 (BST)
  • 우선순위 큐 (힙)
  • 자동 완성, 검색어 추천 (트라이)

5. 기본 연산

  • 탐색, 삽입, 삭제
  • 순회(Traversal): 전위(preorder), 중위(inorder), 후위(postorder), 레벨 순서(level-order)

6. 간단한 이진 트리 노드 구조 (Swift)

1
2
3
4
5
6
7
8
9
class TreeNode<T> {
    var value: T
    var left: TreeNode?
    var right: TreeNode?
    
    init(_ value: T) {
        self.value = value
    }
}

7. 마무리

트리는 계층적 관계를 표현하는 데 적합하며, 다양한 변형을 통해 여러 문제를 효율적으로 해결합니다. 자료구조 중 중요도가 높아 알고리즘 공부에 필수적입니다.

This post is licensed under CC BY 4.0 by the author.