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

Сначала построим кучу.

Затем мы начнем создавать максимальную кучу. Так же, как когда мы строили min-heap, мы начнем с 3-го узла:

этаж (6/2) = этаж (3) = 3

Поскольку 9 имеет только один дочерний узел, 9 будет сравниваться с 3. Если родительский узел меньше дочернего, узлы поменяются местами. Поскольку 9 больше 3, узлы не меняются местами. Переходим ко 2-му узлу.

У 2-го узла двое потомков. Большее из двух - 5, поэтому 5 сравнивается с 2. Поскольку 5 больше 2, два значения меняются местами.

Узел сравнения уменьшается, и мы начинаем сравнение с 1-го узла.

У 1-го узла есть двое потомков. Сравнивают детей. Поскольку 9 больше 5, 9 сравнивается с 7. Число 9 больше 7, поэтому два узла меняются местами.

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

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

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

Поскольку в дереве нет изменений, мы можем сделать вывод, что дерево максимальной кучи создано.

Если вам понравилось то, что вы прочитали, моя книга Иллюстративное введение в алгоритмы охватывает эту структуру данных и многое другое.