Все темы
77

Удаление из AVL-дерева

Tier 1Закрыто

Где применяется

1. Задача

В прошлом уроке вставка держала дерево сбалансированным: добавь значение, а потом на обратном пути выровняй тот узел, который перекосился. Удаление устроено так же, но с концом сложнее. Сначала делаешь обычное удаление из BST (то самое из шага 70: лист, один ребёнок или два ребёнка через in-order преемника), а потом выравниваешь путь наверх. Трудность в том, что удаление узла может укоротить целое поддерево. Укороченное поддерево может перекосить своего родителя на 2. Починка родителя, в свою очередь, может перекосить его родителя, и так далее. Поэтому вставка останавливается после одной починки, а удаление проверяет и вращает на каждом уровне вплоть до корня.

Этот шаг из платной части

Бесплатные шаги в начале курса (их 33) открыты всем: урок, задача и тесты. Этот шаг открывается с полным доступом. Начни с бесплатного аккаунта и бесплатных шагов.

Завести бесплатный аккаунтПосмотреть, что входит

На LeetCode

Задачи, где нужно отсортированное множество с удалением, например брать наименьший свободный элемент или держать только последние k значений. Удаление из AVL-дерева оставляет каждую операцию на O(log n).

Мы используем необходимые куки для работы сайта (вход и язык). Если ты согласишься, мы также загрузим Google Analytics, чтобы видеть, какие страницы читают, и Google reCAPTCHA для защиты форм обратной связи и сообщений об ошибке от спама. Политика конфиденциальности