[c++] 레드-블랙 트리(Red-Black Tree)
레드-블랙 트리(Red-Black Tree)는 이진 검색 트리의 변형이며 각 노드가 레드 또는 블랙의 색상을 가집니다. 이러한 트리는 다양한 연산을 효율적으로 지원하며 자가 균형을 유지하여 검색, 삽입 및 삭제 작업의 시간 복잡도를 최대 O(log n)으로 제한합니다.
특징
- 각 노드는 레드 또는 블랙의 색상을 가집니다.
- 모든 외부 노드(NIL)는 블랙으로 가정합니다.
- 루트 노드는 블랙입니다.
- 레드 노드의 자식은 모두 블랙입니다.
- 어떤 노드로부터 하위 리프까지의 블랙 노드 수는 일정합니다.
레드-블랙 트리는 삽입, 삭제, 검색 작업에 대해 O(log n)의 시간 복잡도를 보장합니다. 이진 검색 트리와 달리 균형을 유지하여 최악의 경우에도 일정한 높이를 유지할 수 있습니다.
시각적 표현
레드-블랙 트리는 다음과 같은 시각적 특징을 가집니다.
// 예시 코드
class Node {
int key;
bool isRed;
Node* left;
Node* right;
Node* parent;
};
결론
레드-블랙 트리는 데이터 구조 중 하나로 균형을 유지하면서 삽입, 삭제, 검색을 효율적으로 처리할 수 있습니다. 이 트리는 자가 균형을 유지하도록 설계되어 있으며, 시간 복잡도를 보장하여 대용량 데이터에 대한 효과적인 처리를 가능하게 합니다.
참고 문헌:
- Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Chapter 13: Red-Black Trees