Изменения

Перейти к: навигация, поиск

Участник:Flanir1

1109 байт добавлено, 16:24, 10 мая 2015
Удаление элемента
=== Удаление элемента ===
<tex>x</tex> {{---}} значение удаляемого узла.
<tex>t</tex> {{---}} текущий узел.
Пусть изначально <tex>t = \mathtt{search(x)}</tex>{{---}} узел, где находится x. Если у <tex>t</tex> не существует родителя, то это корень. Удалим его.
Если у <tex>t</tex> существует родитель, и у него 3 сына, то просто удалим t.
 
Если у родителя(<tex>\mathtt{t.parent}</tex>) 2 сына, то удалим <tex>t</tex>, а его брата(<tex>b</tex> перецепим к родителю соседнего листа(обозначим его за <tex>p</tex>). Вызовем <tex>updateKey(b)</tex> и <tex>splitParent(p)</tex>, так как у <tex>p</tex> могло оказаться 4 сына. Удалим теперь и <tex>\mathtt{t.parent}</tex>. После возврата из рекурсии обновим все ключи с помощью <tex>\mathtt{updateKeys()}</tex>. Будем запускаться от <tex>b</tex>
=== Слияние двух деревьев ===
143
правки

Навигация