[Data structure] 다양한 트리구조
이진 트리 (Binary Tree)
이진 트리는 각 노드가 최대 두 개의 자식 노드를 가지는 트리 구조.
각 노드는 왼쪽 자식 노드와 오른쪽 자식 노드를 가질 수 있음.
A
/ \
B C
/ \
D E
특징
노드 수: 각 노드는 0개, 1개, 또는 2개의 자식 노드를 가질 수 있음.
구조적 다양성: 이진 트리는 균형 이진 트리, 완전 이진 트리 등 다양한 형태로 나뉠 수 있음.
이진 검색 트리 (Binary Search Tree, BST)
이진 검색 트리는 이진 트리의 특수한 형태로, 각 노드의 왼쪽 서브트리에는 해당 노드보다 작은 값이, 오른쪽 서브트리에는 큰 값이 위치하는 구조.
4
/ \
2 6
/ \ / \
1 3 5 7
특징
검색 효율성: O(log n)의 시간 복잡도로 데이터를 검색할 수 있음 (균형 상태일 때).
정렬: 자동으로 정렬된 구조를 가짐.
힙 (Heap)
힙은 완전 이진 트리의 일종으로, 각 노드가 특정한 순서 속성을 가지는 구조.
최대 힙(Max Heap)에서는 부모 노드가 자식 노드보다 크거나 같고, 최소 힙(Min Heap)에서는 부모 노드가 자식 노드보다 작거나 같음.
특징
우선순위 큐: 힙은 우선순위 큐를 구현하는 데 자주 사용됨.
완전 이진 트리: 모든 레벨이 꽉 차 있고 마지막 레벨은 왼쪽부터 채워짐.
시간 복잡도: 삽입과 삭제는 O(log n), 접근은 O(1).
이진 힙 (Binary Heap)
이진 힙은 힙의 특성을 가지는 이진 트리로, 최대 힙과 최소 힙으로 나뉘며, 완전 이진 트리의 형태를 유지함.
최대 힙
10
/ \
9 8
/ \ / \
7 6 5 4
최소 힙
1
/ \
2 3
/ \ / \
4 5 6 7
특징
최대/최소 값 접근: O(1)로 최대값(최대 힙) 또는 최소값(최소 힙)에 접근할 수 있음.
구현: 배열로 쉽게 구현할 수 있음.
레드-블랙 트리 (Red-Black Tree)
레드-블랙 트리는 자가 균형 이진 검색 트리로, 각 노드가 빨간색 또는 검은색으로 표시됨.
특정 규칙을 통해 균형을 유지함.
B
/ \
R R
/ \ / \
A C D E
특징
균형 유지: 약간의 불균형을 허용하지만, 트리의 높이를 O(log n)으로 유지함.
효율적인 삽입/삭제: 삽입과 삭제 후에도 균형을 유지할 수 있도록 재구성됨.
B+ 트리 (B+ Tree)
B+ 트리는 B-트리의 변형으로, 모든 값이 리프 노드에만 저장됨. 내부 노드는 검색에만 사용됨.
[ 10 | 20 ]
/ | \
[5 | 8] [15 | 18] [25 | 30]
특징
높은 차수: 많은 자식 노드를 가질 수 있어 디스크 I/O를 줄일 수 있음.
리프 노드 체인: 리프 노드가 연결되어 있어 범위 검색이 효율적임.
요약
데이터 구조 | 정의 | 특징 |
---|---|---|
이진 트리 | 최대 2개의 자식 노드를 가지는 트리 | 구조적 다양성, 검색 비효율적 |
이진 검색 트리 | 정렬된 이진 | 트리 O(log n) 검색, 자동 정렬 |
힙 | 완전 이진 트리로 특정 순서 속성을 가짐 | 우선순위 큐로 사용, O(log n) 삽입/삭제 |
이진 힙 | 힙의 특성을 가지는 이진 트리 | 최대/최소 값 접근 O(1) |
레드-블랙 트리 | 자가 균형 이진 검색 트리 | O(log n) 균형 유지, 효율적 삽입/삭제 |
B+ 트리 | 모든 값이 리프 노드에 저장되는 B-트리 변형 | 높은 차수, 범위 검색 효율적 |