Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

478 Глава 10. Деревья поиска

(a) (b) (c) (d)

(e) (f) (g) (h)

(i) (j)

(k) (l)

Рисунок 10.31: последовательность вставок в красно-черном дереве: (a) начальное дерево; (b) в - sertion 7; (c) вставка 12, который вызывает двойной красный; (d) после реструктуризации; (e) вставка 15, который вызывает двойной красный; (f) после переокраски (корень остается черным); (g) вставка 3; (h) вставка 5; (i) вставка 14, который вызывает двойной красный; (j) после реструктуризации; (k) вставка 18, который вызывает двойной красный; (l) после переокраски. (Продолжается в рисунке 10.32.)

10.5. Красно-черные деревья 479

(m) (n)

(o) (p)

(q)

Рисунок 10.32: последовательность вставок в красно-черном дереве: (m) вставка 16, который вызывает двойной красный; (n) после реструктуризации; (o) вставка 17, который вызывает двойной красный; (p) после переокраски есть снова двойной красный, чтобы быть обработанным реструктуризацией; (q) после реструктуризации. (Продолженный от рисунка 10.31.)

480

Глава 10. Деревья поиска

Случаи для вставки подразумевают интересную собственность для красно-черных деревьев. А именно, начиная со Случая 1 действие устраняет двойную красную проблему с единственным trinode пере - структурирование и Случай, 2 действия не выполняют операций по реструктуризации, самое большее одна реструктуризация необходима в красно-черной вставке дерева. Вышеупомянутым анализом и фактом, что реструктуризация или переокраска берут O (1) время, у нас есть следующий.

Суждение 10.10: вставка входа значения ключа в красно-черном дереве, хранящем n записи, может быть сделана в O (зарегистрируйте n), время и требует O (зарегистрируйте n), recolorings и один trinode, реструктурирующий (реструктурировать операция).

Удаление

Предположим теперь, когда нас просят удалить вход с ключом k от красно-черного дерева T. Удаление такого входа первоначально продолжается как дерево двоичного поиска (Секунда - tion 10.1.2). Во-первых, мы ищем узел u хранение такого входа. Если у узла u нет внешнего ребенка, мы находим внутренний узел v после u в inorder пересечении T, перемещаем вход в v к u и выполняем удаление в v. Таким образом мы можем считать только удаление входа с ключом k сохраненным в узле v с внешним ребенком w. Кроме того, когда мы сделали для вставок, мы имеем в виду корреспонденцию быть - подросток красно-черное дерево T и его связанное (2, 4) дерево T (и алгоритм удаления для T).

Чтобы удалить вход с ключом k от узла v T с внешним ребенком w, мы продолжаем двигаться следующим образом. Позвольте r быть родным братом w и x быть родителем v. Мы удаляем узлы v и w, и делаем r ребенком x. Если v был красным (следовательно r, черное), или r красный (следовательно v, было черным), мы окрашиваем r черный, и мы сделаны. Если, вместо этого, r черный, и v был черным, то, чтобы сохранить собственность глубины, мы даем r фиктивный двойной черный цвет. У нас теперь есть цветное нарушение, названное двойной проблемой с темнокожим населением. Двойной черный в T обозначает underflow в передаче (2, 4) дерево T. Вспомните, что x - родитель двойного узла с неизвестным потоком r. Чтобы исправить двойную проблему с темнокожим населением в r, мы рассматриваем три случая.

Случай 1: Родной брат y r Темнокожий и Имеет Красного Ребенка z. (См. рисунок 10.33.)

Решение этого случая соответствует операции по передаче в (2, 4) дерево T. Мы выступаем, trinode, реструктурирующий посредством операции, реструктурируют (z). Вспомните, что операция реструктурирует (z), берет узел z, его родительский y, и прародителя x, маркирует их временно слева направо как a, b, и c, и заменяет x маркированным b узла, делая его родителем других двух. (См., что описание реструктурирует в Разделе 10.2.) Мы окрашиваем a и c черного, даем b прежний цвет x и окрашиваем r черный. Эта реструктуризация trinode устраняет двойную проблему с темнокожим населением. Следовательно, самое большее одна реструктуризация выполнена в операции по удалению в этом случае.