토픽 19 / 66·트리 자료구조
Red-Black 트리 (Red-Black Tree)
Red-Black 트리 (Red-Black Tree)
각 노드가 빨강 또는 검정 색상을 가지며 5가지 규칙을 만족하여 근사 균형을 유지하는 자가 균형 이진 탐색 트리로, AVL보다 느슨한 균형으로 삽입·삭제가 빠름
목적: 근사 균형, 빠른 삽입·삭제, O(log n) 보장, 실용적 성능
특징: 색상 속성, 느슨한 균형, 회전+색상 변경, 널리 사용
5가지 규칙
균형 보장: 최대 높이 ≤ 2log₂(n+1), 최악 경로가 최선 경로의 2배 이내
동작: 삽입(빨강으로 삽입 → 규칙 위반 시 회전+색상 변경), 삭제(복잡한 케이스 처리)
시간 복잡도: 검색·삽입·삭제 모두 O(log n) 보장
공간 복잡도: O(n) + 색상 1비트
장점: 근사 균형, 빠른 삽입·삭제, O(log n) 보장, 적은 회전, 실용적
단점: 구현 복잡도, AVL보다 느린 검색, 색상 관리
적용사례: Java TreeMap/TreeSet, C++ std::map/set, Linux 커널, 메모리 할당자, DB 인덱스
비교: Red-Black(느슨/빠른삽입/높이2배) vs AVL(엄격/빠른검색/높이1배)
연관: BST, AVL 트리, 균형 트리, 색상, 회전