
레드 블랙 트리는 이진 탐색 트리(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로 해결참고자료