레드블랙트리 삭제 예제

2-4개 트리마다 동일한 순서의 데이터 요소가 있는 빨간색-검은색 트리가 있습니다. 2-4개의 나무에 대한 삽입 및 삭제 작업은 빨간색-검은색 트리의 색상 뒤집기 및 회전과 동일합니다. 따라서 2~4그루의 나무가 적색~검은나무의 논리를 이해하는 데 중요한 도구가 되고, 2~4그루의 나무가 실제로 는 자주 사용되지 않더라도 많은 입문 알고리즘 텍스트가 적색-검은 색 나무 바로 앞에 2-4그루의 나무를 소개하는 이유입니다. 따라서 order-4 B-트리는 각 클러스터에 포함된 값 중 전체 클러스터의 루트 검정 트리와 동일한 클러스터의 다른 값의 상위 값을 유지 관리하지 않습니다. 그럼에도 불구하고, 적색-검은 색 나무에 대한 작업은 값의 벡터를 유지할 필요가 없기 때문에 시간에 더 경제적입니다. [18] 참조로 저장되는 대신 값이 각 노드에 직접 저장되는 경우 비용이 많이 들 수 있습니다. 그러나 B 트리 노드는 각 노드에 대한 색상 특성을 저장할 필요가 없으므로 공간에서 더 경제적입니다. 대신 클러스터 벡터에서 사용되는 슬롯을 알아야 합니다. 값이 참조(예: 개체)에 의해 저장되는 경우 null 참조를 사용할 수 있으므로 값 포인터에 대한 3개의 슬롯과 트리의 자식 참조에 대한 4개의 슬롯이 포함된 벡터로 클러스터를 나타낼 수 있습니다. 이 경우 B-트리는 메모리에서 더 컴팩트하여 데이터 지역성을 향상시킬 수 있습니다. 빨간색-검은색 트리의 리프 노드에는 데이터가 포함되지 않습니다.

이러한 나뭇잎은 컴퓨터 메모리에서 명시적일 필요는 없습니다.null 자식 포인터는 이 자식이 리프라는 사실을 인코딩할 수 있지만 나뭇잎이 실제로 명시적 노드인 경우 빨간색-검은색 트리에서 작동하기 위한 일부 알고리즘을 단순화합니다. 실행 시간을 절약하기 위해 null 포인터 대신 단일 센티넬 노드에 대한 포인터가 모든 리프 노드의 역할을 수행하는 경우도 있습니다. 내부 노드에서 리프 노드로의 모든 참조는 센티넬 노드를 가리킵니다. 2008년, Sedgewick은 이전에 지정되지 않은 자유도를 제거하여 왼쪽 기울어진 빨간색-검은색 트리[21]라고 불리는 더 간단한 버전의 빨간색-검은색 나무를 도입했습니다. LLRB는 삽입 및 삭제 하는 동안을 제외 하 고 모든 빨간색 링크 왼쪽 으로 기울여야 추가 고정을 유지 합니다. 적색-검은 색 나무는 작업 순서에 대해 2-3 그루,[22] 또는 2-4 그루([21])에 아이소메트릭으로 만들 수 있습니다. 2-4 나무 이섬은 세지윅에 의해 1978년에 기술되었습니다. [이 견적은 인용이 필요합니다] 2-4개의 트리를 사용하면 이섬이 분할에 해당하는 “색상 뒤집기”로 해결되며, 이 때 두 자식 노드의 빨간색 색상이 자식 노드를 떠나 부모 노드로 이동합니다.

이 B-트리 유형은 빨간색-검은색 트리 변환에서 모호성을 허용하기 때문에 빨간색-검은색 트리보다 여전히 더 일반적입니다.-여러 개의 빨간색-검은색 나무는 4열의 동등한 B-트리에서 생성될 수 있습니다. B-트리 클러스터에 값이 1개만 포함된 경우 최소 검정이며 두 개의 자식 포인터가 있습니다. 클러스터에 3개의 값이 포함된 경우 중앙 값은 검은색이고 측면에 저장된 각 값은 빨간색입니다. 그러나 클러스터에 두 값이 포함된 경우 둘 중 하나가 빨간색-검은색 트리의 검정 노드가 될 수 있으며 다른 하나는 빨간색이 될 수 있습니다. 제스 : “다시 빨간 문이었다.” 폴락: “빨간 문이 수납 용기라고 생각했어요.” 제스 : “하지만 더 이상 빨간색이 아니었다, 그것은 검은 색이었다.” 안토니오: “그래서 빨간색이 검은 색으로 바뀌는 것은 무엇을 의미합니까?” 폴락 : “예산 적자, 빨간 잉크, 검은 잉크.” 안토니오: “이진 검색 트리에서 나온 것일 수 있습니다.