Data Structure
[자료구조] 트리 (Tree)
qesad
2025. 2. 12. 00:32
트리 / Tree
트리(Tree) 구조는 여러 개의 노드(Node)로 구성되는 그래프의 한 종류이다.
뿌리(Root)가 아래에 있는 일반적인 나무의 형태를 뒤집어 놓은 듯한 형태를 가진다.
트리 성립 조건
아래의 조건을 모두 만족해야 한다.
- 연결 그래프(Acyclic Connected Graph)
- 모든 노드가 연결되어 있어야 하며, 분리된 노드가 존재할 수 없다.
- 사이클(Cycle)이 없어야 함
- 사이클이 존재하는 순환 구조를 가질 수 없다.
- 간선(Edge)를 추가했을 때 사이클이 생긴다면 조건을 위반하게 된다.
- 노드 개수(N)과 간선 개수(E)의 관계 : E = N - 1
- 전체 간선의 개수는 전체 노드 개수보다 1 작다.
주의 사항
- 루트 노드(Root Node)는 필수가 아니다.
- 일반적으로 트리는 하나의 루트 노드를 가지지만 루트 노드가 필수는 아니다.
- 대표적으로 포레스트(Forest, 독립적인 트리의 모음)가 있다.
- 유향 그래프(Directed Graph)에서도 트리 구조가 가능하다.
- 위의 조건을 모두 만족시키는 DAG(Directed Acyclic Graph, 방향 비순환 그래프) 형태가 가능하다.
- 비계층적(Non-Hierarchical) 트리가 존재할 수 있다.
- 일반적으로 트리는 부모-자식 관계를 가지는 계층적 구조 형태지만 그 계층성이 모호한 경우가 있다.
- 포레스트 구조는 특정한 계층 구조를 가지지 않을 수 있다.
- Union-Find, DFS 등에서 트리는 계층적 의미보다 집합을 표현하는 도구 또는 경로 등을 나타낼 수 있다.
트리의 종류
- 일반 트리(General Tree)
- 각 노드가 임의 개수의 자식 노드를 가질 수 있는 트리
- 이진 트리(Binary Tree)
- 각 노드가 최대 두 개의 자식 노드를 가질 수 있는 트리
- 정 이진 트리, 포화 이진 트리, 완전 이진 트리, 이진 탐색 트리, 균형 이진 트리, 힙 등으로 세분화
- 트라이(Trie)
- 문자열 검색을 빠르게 수행할 수 있는 트리 구조
- m-Way Tree
- 이진 트리를 확장하여 각 노드가 2개 이상의 자식 노드를 가질 수 있는 트리
- m-Way Trie, 2-3 Tree, 2-3-4 Tree 등
- Height-Balanced m-Way Tree
- 특정 규칙을 통해 스스로 균형을 유지하는 m-Way Tree
- B-Tree, B+-Tree, K-d B-Tree 등
- Spatial Tree
- 다차원 정보를 다루기 위한 트리 구조
- Quad Tree, Oct Tree, K-d Tree, R-Tree, R* Tree 등