Приоритетные очереди реализованы с помощью avl в python - PullRequest
0 голосов
/ 30 декабря 2018

Реализованы операции вставки, удаления, поиска по дереву AVL.Как я могу реализовать операции вставки, максимум, извлечение-макс, увеличение-ключ, уменьшение-ключ, которые должна поддерживать очередь приоритетов в python?

1 Ответ

0 голосов
/ 03 января 2019

AVL-дерево - это просто сбалансированное бинарное дерево поиска.Операции с кучей, о которых вы спрашивали, могут быть легко реализованы с использованием стандартных операций AVL.

  • insert - Просто вставьте в дерево AVL, как обычно.
  • максимум - я полагаюты имеешь в виду найти макс.Максимальный элемент в дереве AVL - самый правый узел.Так что просто начните с корня, пройдите правые указатели до конца и верните листовой узел.
  • extract-max - найдите максимальный узел, как указано выше, и удалите его.
  • увеличения-ключаи клавиша уменьшения - выполните стандартный поиск двоичного дерева, чтобы найти интересующий вас узел. Удалите его из дерева.Изменить ключ.Повторно вставьте в дерево.

Обратите внимание, что это будет не так эффективно, как очередь с двоичной приоритетной кучей, но будет работать.

...