다음과 같이 빨강-검정 나무의 정의를 가정 해 봅시다.
- 이진 검색 트리입니다.
- 각 노드는 빨간색 또는 검은 색으로 표시됩니다. 뿌리는 검은 색입니다.
- 가장자리로 연결된 두 개의 노드는 동시에 빨간색 일 수 없습니다.
- 다음은 위키와 같이 NIL 리프에 대한 좋은 정의입니다 . NIL 잎은 검은 색입니다.
- 루트에서 NIL 리프까지의 경로에는 동일한 수의 검은 노드가 포함됩니다.
질문
레드 블랙 트리에 대한 insert
및 delete
작업을 구현했다고 가정합니다 . 자, 만약 당신이 유효한 레드-블랙 트리를 받았다면, 그것을 구성 하는 시퀀스 insert
와 delete
연산 이 항상 있습니까?
동기
이 질문은 이것에 의해 동기를 질문 과에서 토론에 의해 이 질문에 .
개인적으로, 나는 당신이 검은 노드로만 구성된 유효한 레드 블랙 트리를 상상한다면 (완전히 균형 잡힌 트리를 상상하고 있음을 의미합니다), 그것을 구성 하는 시퀀스 insert
와 delete
연산 이 있다고 믿습니다 . 하나,
- 나는 그것을 정확하게 증명하는 방법을 모른다
- 나는 또한 더 일반적인 경우에 관심이 있습니다
insert
와 delete
구성하기 위해 검은 색으로 만 노드로 구성된 유효 레드 - 블랙 트리 . 높이 h 의 트리를 만들기 위해 삽입 / 삭제를 사용합니다 . 첫째, 우리는 사용 폭 우선 방식으로 완벽하게 균형 레드 - 블랙 트리 만들 수 있습니다 2 시간 + 1 - 1 개 다음 사용하여 삽입을 시간 * 2 시간을 - 1삽입과 같은 양의 삭제는 완전히 검은 나무에 다시 칠합니다. 여기서 트릭 은 루트에 도달 할 때까지 트리에서 가장 낮은 빨간색 레이어를 배 위로 올리는 것입니다.
insert
하여 delete
조작 할 수 있습니까?
insert
및 delete
; 이러한 작업을 수행하는 몇 가지 방법이있을 수 있습니다. b) RB 나무는 본질적으로 4 차의 B 나무이기 때문에 영감을 얻을 수 있습니다. RB에서 B로 (또는 뒤로) 맵핑이 고유하지 않기 때문에 세부 사항이 까다로울 수 있습니다.