Изменения

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

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

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

Навигация