ПРИМЕЧАНИЕ. Это для людей, которые уже знают, как реализовать структуру данных кучи без использования какой-либо библиотеки. Если нет, я рекомендую изучить его и понять внутреннюю работу кучи.

Куча - это древовидная структура данных, в которой все узлы дерева расположены в определенном порядке. По сути, это полное двоичное дерево, удовлетворяющее таким свойствам кучи, как min-heap и max-heap.

Кучи используются во многих известных алгоритмах, таких как алгоритм Дейкстры для поиска кратчайшего пути, алгоритм сортировки кучи, реализующий приоритетные очереди и многое другое. По сути, кучи - это структура данных, которую вы будете использовать, когда хотите очень быстро получить доступ к минимальному или максимальному элементу.

  1. Минимальная куча: это свойство кучи, в котором родительский элемент является наименьшим среди его левого и правого дочерних элементов, а корневой элемент - наименьшим среди всех элементы.
  2. Max-heap: в этом свойстве родительский элемент самый большой среди его левого и правого дочерних элементов, , а корневой элемент является самым большим среди всех элементов.

Библиотека для реализации min-heap и max-heap:

«heapq» с помощью этой библиотеки мы можем обрабатывать операции, выполняемые в куче.

heapq.heapify(listForTree) Используйте для создания минимальной кучи, он принимает список в качестве параметра.

heapq._heapify_max(listForTree) Используйте для создания максимальной кучи, он принимает список в качестве параметра.

heapq.heappop(minheap) используется для извлечения элемента из минимальной кучи, разница между обычным pop() и heappop() заключается в том, что после функции heappop свойство кучи данного списка сохраняется. Он возвращает наименьший, то есть корневой элемент дерева.

heapq._heappop_max(maxheap) эта функция pop выталкивает корневой элемент, т.е. самый большой элемент в дереве, и после функции pop сохраняется свойство кучи.

Чтобы увидеть все методы, которые вы можете использовать с heapq, ознакомьтесь с документацией Python по heapq.

Спасибо за прочтение!