원리 레드 - 블랙 트리 삽입, 삭제 알고리즘 도면과

첫째, 개념

RB 트리, 이진 검색 트리의 특별한 종류 또한 레드 - 블랙 트리로 알려진 레드 - 블랙 트리, 의미, 각 노드는 메모리 비트의 레드 - 블랙 트리 빨간색이나 검은 색이 될 수있는 색상 노드를 대표했다.

둘째, 특성

1, 각 노드는 레드) 혹은 검은 색 (黑

이 루트는 검은 색

도 3은 각각의 리프 노드 (NIL)를 검정한다. 참고 :이 잎 노드, 그것은 빈 리프 노드를 의미

노드가 빨간색 인 경우 4, 다음 자식 노드는 검은 색이어야합니다

5, 그 경로에있는 모든 잎 어느 한 노드에서, 검은 색 노드의 수는 동일 포함

부동산 분석 1 : 특성에 따라 4 개의 연속 빨간색 노드를 가질 수 없습니다 모든 경로의 루트 노드에 각 잎 노드에서 발견

이 개 분석 특징 : 명백한 5의 특징은, 경로 두 번 다른 경로보다 더 성장하지 않습니다, 그것은 레드 - 블랙 트리 그래서 거의 균형 이진 트리입니다

셋째, 응용 프로그램

레드 - 블랙 트리 주로 주문 데이터를 저장, 그것의 시간 복잡도는 O (logn), 매우 효율적입니다

넷째, 기본 조작 - 삽입

1. 소개

레드 - 블랙 트리의 기본 동작은, 방법이 사용됩니다 회전 추가 및 삭제 레드 - 블랙 트리 후, 추가 및 삭제하는 것입니다. 그 이유는 사용 회전 방식 할까? 다음 추가 또는 레드 - 블랙 트리 노드를 제거하기 때문에, 레드 - 블랙 트리가 레드 - 블랙 트리의 다섯 개 가지 특성을 충족하지 않을 수 있습니다, 변경, 그래서 그것은 레드 - 블랙 트리까지 없습니다. 나무는 다시 돌려 레드 - 블랙 트리가 될 수있다, 목적은 검은 나무 특성 회전을 확인하는 것입니다

L : X 노드가 남았다, 수단 "아이의 권리는 X x의 아버지가된다", 그리고 "원래 바로 아이가 아이가 X의 오른쪽 자식이 왼쪽 X." 즉, 왼손잡이 "왼쪽"다른 노드의 회전을 의미하는 것은 좌측 노드진다

오른 손잡이 : 수단 노드 X의 오른손 행위 "X의 왼쪽 아이는 x의 아버지가되고,"X 오른쪽의 자녀의 올바른 아이로 원래의 왼쪽과 오른쪽의 아이를 X "오른쪽에 있습니다." "이 노드를 말한다는 노드 오른쪽으로 회전 될

2 삽입 규칙

새로운 노드는 빨간색에 삽입

3 레드 - 블랙 트리 네 가지 사례를 삽입

노드 직접 검정으로 설정되어야한다 : (1) 새로운 노드는 루트 노드는 부모 처리 사상이없는 경우이며

움직이지 않는이 이미 레드 - 블랙 트리입니다 : 새로운 노드가 이미 검은 색의 처리 아이디어 (2) 부모 노드

(3) t 노드와 부모 노드는 레드, 로드맵이다 노드 t 검정으로 부모 노드, 조부모 노드 B는 적색으로 설정되고, C는 현재 노드와 조부모 노드 계속 ... 새로운 현재 노드 작업

(4) 부모 노드는 레드, 블랙 t 노드는 다음과 같은 네 가지 경우로 나누어 져이다 :

  • ; 부모와 조부모의 컬러 나 교환 조부모는 오른 손잡이 될 것이다 : 현재 노드의 아버지의 아버지의 할아버지가 아이 (왼쪽 - 왼쪽), 아이디어를 다루는 왼쪽, 아이 남아 있습니다.
  • B 후 좌측 좌측 상황을 이용, 부모 노드 L, 현재 노드와 부모 노드 : 현재 노드가 아버지의 자식, 아버지는 아이의 할아버지 (오른쪽에서 왼쪽), 아이디어 취급을 떠났다.
  • 조부모가 남아있을 것입니다, 부모와 조부모의 B 색상 교환 : 현재 노드가 아버지의 자식, 아버지가 바로 아이 (오른쪽 - 오른쪽)의 할아버지, 아이디어를 다룬다.
  • 현재 노드는 아버지 아이디어를 다루는 오른쪽 아이 (좌우)의 할아버지, 아버지가 아이를 왼쪽입니다 : 오른손 부모 노드, 현재 노드와 부모 노드를, B 후 오른쪽 마우스 오른쪽 상황을 사용합니다.

4 범례 삽입

상기 모든 경우를 노출 (12)을 삽입하여 1,920,117,194,151,851,413이다. 3 8.6 10 16 17

(1) 12 삽입

참고 : 루트 노드가 삽입되어있는 경우, 직접 검은 색으로 설정되어있는

(2) 삽입

참고 : 삽입 된 노드가 루트 노드 인 경우에는 빨간색으로 설정

(3) 삽입 9

(4) (2) 삽입

(5) 0 삽입

(6) (11)를 삽입

(7) (7) 삽입

(8) (19)를 삽입

(9) (4)를 삽입

(10) (15)를 삽입

(11) (18)를 삽입

(12) (5)를 삽입

(13) (14)를 삽입

(14) (13)를 삽입

(15) (10)는 삽입

(16) (16)를 삽입

(17) (6)를 삽입

(18) 3 삽입

(19) (8)를 삽입

(20) (17)를 삽입

삽입 과정이 완료 설명한다.

다섯 개 기본 조작 - 삭제

1, 레드 - 블랙 트리의 경우 삭제

첫째, X는 트리에서 노드를 삭제합니다 (후속 노드를 삭제하는 방법을 찾아)

사례 ① : X는 자녀가없는, 빨간 X 경우, X는 직접 삭제 한 경우, X는 블랙 인 경우, 장소의 X는 현재 노드의 팔레트를 회전 한 다음 X 삭제

사례 ② : X 삭제하는 하나의 자식 C와 교환 가치의 X의 C 다음 새 X가있는 경우. 레드 노드가 아이를 가질 또는 두 개의 검은 색 아이가없는 하나 때문에 레드 - 블랙 트리의 특성에 따르면, 다음 X는 빨간색이 될 수 없습니다. 이 때, 경우 현재 노드는 새로운 X의 분석을 ①하는 경우

사례 ③ : X는 후속 노드 D를 찾을 수있는 가장 작은에서 두 아이를 가지고 있으며, X의 교환 가치의 D 경우 새 X 삭제할. 이 때, 새로운 X의 ①이나 ② 현재 노드의 결정에

二、旋转调色(N=旋转调色的当前节点[等于情况①中的X],P=N的父亲,W=N的兄弟,Nf=N的远侄子,Nn=N的近侄子)

情况1:N是根或者N是红色,则:直接将N设为黑色

情况2:N不是根且N是黑色,且W为红色,则:将W设为黑色,P设为红色,对P进行旋转(N为P的左子时进行左旋,N为P的右子时进行右旋),将情况转化为情况1、2、3、4、5

情况3:N不是根且N是黑色,且W为黑色,且W的左右子均为黑色,则:将W设为红色,将P设为当前节点进行旋转调色,将情况转化为情况1、2、3、4、5

情况4:N不是根且N是黑色,且W为黑色,且Nf为黑色,Nn为红色,则:交换W与Nn的颜色,并对W进行旋转(N为P的左子进行右旋,N为P的右子进行左旋),旋转后N的新兄弟W有一个红色WR,则转换为情况5

情况5:N不是根且N是黑色,且W为黑色,且Nf为红色,Nn为黑色,则:将W设为P的颜色,P和Nf设为黑色,并对P进行旋转(N为P的左子进行左旋,N为P的右子进行右旋),N设为根

2、插入图例

通过删除12   1   9   2   0   11   7   19   4   15   18   5   14   13   10   16   6   3   8   17完成上述所有情形的展示。

(1)删除12

(2)删除1

(3)删除9

(4)删除2

(5)删除0

(6)删除11

(7)删除7

(8)删除19

(9)删除4

(10)删除15

(11)删除18

(12)删除5

(13)删除14

(14)删除13

(15)删除10

(16)删除16

(17)删除6

(18)删除3

(19)删除8

(20)删除20

删除完毕!

参考:红黑树原理以及插入、删除算法 附图例说明

추천

출처www.cnblogs.com/aspirant/p/11717724.html