위키득계정 ↗
기술

적흑 트리

적흑 트리기술
영어
Red-black tree
노드 정보
빨강 또는 검정
높이
O(log n)
균형 복구
색 변경과 회전
적흑 트리는 노드에 빨강과 검정 정보를 두고 색의 배치 규칙으로 높이를 제한하는 균형 이진 탐색 트리다. 키의 탐색 순서와 색 불변식을 함께 유지하며 탐색, 삽입과 삭제를 O(log n)에 수행할 수 있다.

색이 나타내는 제약

표준 정의에서는 루트를 검정으로 두고 빨강 노드의 자식이 빨강이 되지 않게 한다. 각 노드에서 자손의 빈 말단까지 가는 경로에는 같은 수의 검정 노드가 있어야 한다. 빈 말단도 검정으로 취급한다. 실제로 잎 데이터만 검정이어야 한다는 뜻은 아니다.

균형의 정도

빨강 노드가 연속할 수 없으므로 검정 노드 수가 같은 경로들의 길이가 무제한으로 벌어지지 않는다. 이 제약이 높이를 로그 수준으로 제한한다. 모든 잎의 깊이가 같거나 왼쪽과 오른쪽 부분 트리의 높이 차가 항상 1 이하일 필요는 없다는 점에서 AVL 트리와 조건이 다르다.

삽입과 삭제

키를 넣거나 지우는 기본 작업은 이진 탐색 트리의 순서를 따른다. 그 뒤 깨진 색 조건을 색 변경과 회전으로 복구한다. 회전은 키의 정렬 관계를 보존한다. 색만 붙였다고 균형이 저절로 유지되는 것이 아니므로 연산 뒤 불변식이 만족되는지 확인해야 한다.

어떤 문제를 해결하는가

일반 이진 탐색 트리에 정렬된 키가 계속 들어오면 한쪽으로 긴 경로가 생길 수 있다. 적흑 트리는 입력 순서에 따른 이런 편향을 제한한다. 정렬된 키 순회와 키 탐색이 필요할 때 활용할 수 있으며, 해시 테이블처럼 키의 순서를 무시한 저장 방식과 구분된다.

관련 문서

AVL 트리 / 이진 탐색 트리 / 이진 트리 / 자료구조 / 시간 복잡도 / 스킵 리스트 / 해시 테이블 / 알고리즘