트리는 계층적으로 데이터를 구성할 수 있는 비선형 자료구조. 노드(Node)들로 이루어져 있고, 노드 간에는 부모-자식 관계가 존재한다.
루트(Root): 트리의 가장 위에 있는 노드
리프(Leaf): 자식이 없는 노드
간선(Edge): 노드를 연결하는 선
서브트리(Subtree): 특정 노드를 루트로 하는 하위 트리
| 트리 종류 | 설명 |
|---|---|
| 이진 트리 (Binary Tree) | 모든 노드가 최대 2개의 자식을 가짐 |
| 이진 탐색 트리 (BST) | 왼쪽 자식 < 부모 < 오른쪽 자식 조건을 만족 |
| 힙 (Heap) | 완전 이진 트리 + 특정 조건(최대/최소값) 유지 |
| 균형 트리 (AVL, Red-Black Tree) | 삽입/삭제 후에도 균형을 유지 |
| 트라이(Trie) | 문자열 검색/자동완성에 유용한 트리 |
public class Main {
public static void main(String[] args) {
BinarySearchTree bst = new BinarySearchTree();
bst.insert(8);
bst.insert(3);
bst.insert(10);
bst.insert(1);
bst.insert(6);
bst.insert(14);
System.out.print("중위 순회 결과: ");
bst.inorder(); // 1 3 6 8 10 14
}
}
파일 시스템 구조
HTML/DOM 구조
데이터베이스 인덱스 (B-Tree, B+ Tree)
AI 의사결정 트리
문자열 검색 (Trie)
트리는 개념 자체는 단순하지만 활용도가 매우 높은 자료구조이다. 특히 자바에서는 TreeMap, TreeSet, 또는 위에서 본 것처럼 직접 트리를 구현하는 방식으로 트리를 사용할 수 있다.