Куча, метод просачивания

Я сейчас делаю максимальную кучу. Когда я использую метод remove(), я понимаю, что я бы поменялся с большими детьми. Что если оба ребенка имеют одинаковый приоритет? например

Случай 1:

куча = [5,7,7,16,15]

если я уберу 5 и заменю его на 15, я бы стекал вправо (что неправильно), поэтому я бы стекал в левую сторону.

но используя ту же логику, если у меня есть

куча = [5,7,7,16,15,18]

и я стекаю влево, это больше не будет действительной кучей.

Что я могу сделать, чтобы у меня была допустимая куча?

1 ответ

Это не имеет значения.

Спускаться вправо в первом случае хорошо:

[15, 7, 7, 16] -> [7, 7, 15, 16]

Спускаться влево в первом случае это нормально:

[15, 7, 7, 16] -> [7, 15, 7, 16]

Спускаться вправо во втором случае хорошо:

[18, 7, 7, 16, 15] -> [7, 7, 18, 16, 15]

Слева вниз во втором случае это хорошо:

[18, 7, 7, 16, 15] -> [7, 18, 7, 16, 15] -> [7, 15, 7, 16, 18]

Другие вопросы по тегам