Я не думаю, что это возможно, чтобы удалить случайный элемент из кучи. Давайте возьмем этот пример (следуя тому же соглашению):
3, 10, 4, 15, 20, 6, 5.
Теперь, если я удаляю элемент 15, куча становится: 3, 10, 4, 5, 20, 6
Это делает кучу несовместимой из-за того, что 5
является потомком 10
.
Причина, по которой я думаю, что случайное удаление не сработает, заключается в том, что вы можете заменить внутренний узел (вместо корня или листа) в куче, и, таким образом, есть два пути (родители и дети) к heapify
(как по сравнению с 1
путь в случае pop()
или insert()
).
Пожалуйста, дайте мне знать, если я что-то здесь упустил.