Изменения

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

Красно-черное дерево

437 байт добавлено, 13:18, 15 мая 2015
Удаление вершины
# Если у вершины нет детей, то изменяем указатель на неё у родителя на <tex>nil</tex>.
# Если у неё только один ребёнок, то делаем у родителя ссылку на него вместо этой вершины.
# Если же имеются оба ребёнка, то находим вершину со следующим значением ключа. У такой вершины нет левого ребёнка(так как такая вершина находится в правом поддереве исходной вершины и она самая левая в нем, иначе бы мы взяли ее левого ребенка. Иными словами мы переходим в правое поддерево и спускаемся вниз до тех пор, пока у вершины есть левый ребенок). Удаляем уже эту вершину описанным во втором пункте способом, скопировав её ключ в изначальную вершину.
Проверим балансировку дерева. Так как при удалении красной вершины свойства дерева не нарушаются, то восстановление балансировки потребуется только при удалении чёрной. Рассмотрим ребёнка удалённой вершины.
577
правок

Навигация