레드 블랙 트리는 이진 탐색 트리(Binary Search Tree)의 한 종류로
스스로 균형을 잡는
(Self-Balancing) 트리로
각각의 노드가레드나 블랙
인 색상 속성을 가지고 있습니다.
대표적으로는 연관 배열 등을 구현하는 데 쓰이는 자료구조 입니다.
시간복잡도는 O(logN)
입니다.
#1. 모든 노드는
Red
혹은Black
#2.루트 노드
는Black
#3.모든 nil 노드
(leaf)는Black
#4.Red의 자녀
는무조건 Black
(Red 연속적으로 존재할 수 없음)
#5.임의의 노드
에서자손 nil 노드
들까지가는 경로의 Black의 수는 같다
삽입한 노드는
항상Red
(#5 속성 만족)nil 노드색
은Black
으로 고정 (#3 속성 만족)루트노드는 삽입
시Black
- BST 특징인 자신보다
작은 값들은 왼쪽
큰 값들은 오른쪽
삽입
삽입
시에 구조를 바꾸면서도 BST 특징을 유지 시켜주는 방법중에회전
이 있습니다.
(괄호) 표시된 것으로 전부 적용하면 반대의 케이스에도 동일하게 적용됩니다.
삽입된 노드
가 부모의 왼쪽(오른쪽)자녀
이며 <Case 3>부모는 Red
이고 할아버지의 왼쪽(오른쪽)자녀
이고 삼촌은 Black
인 케이스라면부모
와 할아버지
의 색상
을 변경 후
할아버지 기준으로 오른쪽(왼쪽)
으로 회전
삽입된 노드
가 부모의 오른쪽(왼쪽) 자녀
이며 <Case 2>부모
는 Red
이고 할아버지의 왼쪽(오른쪽) 자녀
이고 삼촌은 Black
인 케이스라면부모를 기준
왼쪽(오른쪽)
으로 회전한 뒤 Case3
수행
삽입된 노드
의 부모가 Red
이며삼촌도 Red
인 케이스라면부모
와 삼촌
을 Black
으로 바꾸고 할아버지
에서 다시 확인
을 시작
- 삭제하려는 노드의
자녀가 없거나
,1개
라면
삭제 되는색 =삭제 되는 노드의 색
- 삭제하려는 노드의
자녀가 2개
라면
삭제되는색 =삭제되는 노드
의successor의 색
- 삭제되는 색이
Red
라면 어떤 속성도위반하지 않는다.
- 삭제되는 색이
Black
라면#2
,#4
,#5
속성을 위반 하게 됨
ㄴ 특수 상황을 제외하면#5번 속성을 항상 위반
삭제되는 색이
Black
이고#5
속성을 위반일때
삭제된 색의 위치에대체한 노드
에extra black
을 부여하여 속성 위반을 해결
경로에서Black
수를 카운트할때extra black
은 하나의Black
으로 카운트
Doubly Black
: extra black이 부여된 대체노드가Black 노드
인 케이스
Red and Black
: extra black이 부여된 대체노드가Red 노드
인 케이스
(괄호) 표시된 것으로 전부 적용하면 반대의 케이스에도 동일하게 적용됩니다.
Doubly black
의 오른쪽(왼쪽)
형제가 Black
이며그 형제
의 오른쪽(왼쪽)
자녀는 Red
인 케이스오른쪽(왼쪽)
형제는 부모색(왼쪽)
으로, 오른쪽(왼쪽)
형제의 오른쪽(왼쪽)
자녀를 Black
으로, 부모
는 Black
으로 바꾼 후에 부모를 기준으로 왼쪽(오른쪽)
으로 회전하여 해결Doubly black
의 오른쪽(왼쪽)
형제가 Black
이며왼쪽(오른쪽)
자녀가 Red
이며오른쪽(왼쪽)
자녀가 Black
일때Doubly black의 형제
의 오른쪽(왼쪽)
자녀가 Red
가 되게 하고Case4
적용Doubly black의 형제
가 Black
이며형제
의 두자녀 모두 Black
일때Doubly black
과 그 형제의 Black
을 모아서 부모에게 전달해서부모
가 Extra black
해결을 위임부모
가 Red-and-black
이면 완료
부모
가 Doubly black
이면서 루트노드
이면 Black
으로 아니면 Case 1,2,3,4
로 해결오른쪽(왼쪽)
Doubly Black 형제
가 Red
일때Doubly black의 부모
와 형제
의 색을 바꾸고
Doubly black의 부모
를 기준으로 왼쪽(오른쪽)
으로 회전
한 뒤Doubly black
을 기준으로 Case 2,3,4
로 해결참고자료