Das Löschen eines Knotens aus der Mitte des Heapspeichers kann in O (lg n) erfolgen, vorausgesetzt, das Element im Heap kann in konstanter Zeit gefunden werden. Angenommen, der Knoten eines Heap enthält id als Feld. Nun, wenn wir die ID bereitstellen, wie können wir den Knoten in O (Ign) -Zeit löschen?Löschen eines Knotens aus der Mitte eines Heapspeichers
Eine Lösung kann sein, dass wir eine Adresse eines Ortes in jedem Knoten haben können, wo wir den Index des Knotens im Heap pflegen. Dieses Array würde nach Knoten-IDs geordnet sein. Dies erfordert jedoch, dass ein zusätzliches Array beibehalten wird. Gibt es noch eine andere gute Methode, um dasselbe zu erreichen?
PS: Ich stieß auf dieses Problem bei der Implementierung von Djikstra Shortest Path-Algorithmus.
Ja, das ist eine der Lösungen. Ich denke, es ist nicht möglich, ohne zusätzlichen Platz zu verwenden. Recht? – Jonh