[레드 블랙 트리]
: 균형잡힌 트리의 유형중 하나.
: 각 노드마다 색깔을 가지게되는데, Red나 Black 중 한개를 가진다.
: 이 노드의 색을 이용해 루트에서 잎 노드의 경로에 나타나는 색을 제한해 균형을 유지한다. (아래에 자세히)
[레드블랙 트리의 특성]
: 다음 특성을 만족하는 이진 검색 트리를 레드블랙 트리라 한다. (중요)
1. 모든 노드는 적색 or 흑색 이다.
2. 루트는 흑색이다.
3. 모든 잎 이후의 노드, NIL 노드는 모두 흑색이다.
4. 노드가 적색이면 그 노드의 자식은 모두 흑색이다. (흑색의 자식이 꼭 적색일 필요는 없지만, 적색의 자식은 꼭 흑색이여야 한다!)
5. 각 노드로부터 그 노드의 자손인 리프로 가는 경로들은 모두 같은수의 흑색 노드를 포함한다.
[레드 블랙 트리의 예시]
- 노드의 높이 : 잎노드로 가는 가장 긴 거리 : 4
- 노드 x의 흑색 높이 : 자기 자신 x 의 색 포함하지 않고, NIL 색 포함한 경로까지의 블랙 노드의 개수 (47노드의 흑색 높이 : 1 )
[레드블랙 트리의 중요한 특성]
n개의 내부 노드를 가지는 레드블랙 트리는 최대 2log(n + 1)의 높이를 가진다. |
: 이 사실을 증명하기위해선 다른 2가지 보조정리를 증명해야한다.
1. 어떤 노드 x 라도, 해당 노드의 위치 h(x)에 대해 bh(x) >= h(x)/2이다.
2. 루트가 노드 x인 서브트리는 적어도 2^(bh(x)) - 1 개의 내부 노드를 가진다.
# 1,2 번에 대한 증명 과정 생략
# 1,2 번을 이용한 중요한 특성 증명 과정 생략
[레드블랙 트리의 연산]
: SEARCH, MINIMUM, MAXIMUM, SUCCESSOR, PREDECESSOR을 위 보조정리를 이용하면 모두 O(logn)의 시간에 구현가능함을 알수 있다.
: TREE_INSERT, TREE-DELETE 또한 O(logn)의 시간에 구현가능하다.
[레드블랙 트리의 삽입(INSERT)]
: 기본적인 삽입은 이진 트리의 삽입과 동일. 단 새로운 노드의 색깔이 무엇일지가 이슈이다.
: 삽입되는 위치의 부모노드가 레드인경우 : 레드의 자식은 반드시 블랙이여야 한다.
: 삽입되는 위치의 부모노드가 블랙인경우 : 블랙
[레드블랙 트리의 삭제(DELETE)]
: 제거된 노드의 색깔은 무엇이였는가?
- 모든 노드가 레드 or 블랙이다 : OK
- 루트가 블랙이다 : NOT OK. root 삭제시 root 노드의 자식중 레드 노드로 변경발생 가능!
- 모든 잎 노드는 블랙이다 : OK
- 노드가 레드면, 그 노드의 자식 노드는 블랙이다 : NOK OK. row에 두 레드 노드 생성 가능!
- 각 노드로부터 경로들은 모두 같은수의 흑색 노드를 포함한다 : NOT OK : 특정 노드에서 흑색 높이 변경 가능!
# 레드블랙 트리의 삽입과 삭제 알고리즘은 따로 다루지 않겠습니다.
'기타 > [알고리즘 이론]' 카테고리의 다른 글
알고리즘 이론 15강. 동적 프로그래밍(Dynamic Programming) (0) | 2019.12.01 |
---|---|
알고리즘 이론 14강. B-Trees (0) | 2019.11.29 |
알고리즘 이론 12강(2). AVL 트리 (0) | 2019.11.22 |
알고리즘 이론 12강. 이진 검색 트리 (0) | 2019.11.21 |
알고리즘 이론 11강. 해시 테이블 (0) | 2019.11.04 |