Использование Heapify в Java PriorityQueue - PullRequest
0 голосов
/ 23 октября 2018

В настоящее время я использую Java Priority Queue, а также HashMap для ссылки и обновления значений в Priority Queue.Однако, так как обновленные значения приведут к тому, что PriorityQueue потеряет свое свойство кучи, мне потребуется снова выполнить Heapify моего PriorityQueue.Однако в API PriorityQueue Java нет метода heapify () https://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html

. Я хотел бы знать, есть ли способ для создания кучи Java PriorityQueue.Я прочитал это: метод кучи Java с использованием priorityQueue , но добавление
if (!pq.isEmpty()) {pq.offer(pq.poll()); }
на самом деле не решает проблему, поскольку не создает кучи всей моей кучи:

e.g PriorityQueue has 8 elements, update 6th element in PriorityQueue with help from HashMap, use pq.offer(pq.poll()); PriorityQueue heapifies down from the subtree is smaller, ignoring the other subtree. PriorityQueue heapifies up the root that we just removed from the child vertex to the root only

Я знаю, что это может быть не очень эффективным способом сделать это, но есть ли возможность использовать heapify в Java PriorityQueue, чтобы снова вернуть его в минимальную кучу?

...