Чтобы реализовать метод decreaseKey
, нам нужно:
- Найти запись в куче и уменьшить ее ключ на единицу.
- Выполнять восходящее всплытие до тех пор, покаСвойство heap-order полностью восстановлено.
Если нам не нужна запись с наименьшим ключом, мы вообще не знаем, где хранятся записи.Более того, даже если мы найдем запрошенную запись в приемлемое время, мы просто не сможем обновить ее ключ в отношении методов SplMinHeap.
Так что я не вижу эффективного способа реализации decreaseKey
метод со структурой данных SplMinHeap.Возможно, вам следует реализовать YourHeap с YourCompleteBinaryTree, реализованным, например, с помощью YourArrayList.