Reicht die Teilordnung im Gegensatz zur Gesamtordnung aus, um einen Haufen zu bauen?

C ++ std :: priority_queue benötigt nur eine Teilreihenfolge. Aber wenn seine Umsetzung abinärer Haufen, wie funktioniert es? Beispiel: Nehmen wir an, wir haben ein teilweise bestelltes Set( {a, b, c, x}, {c < b, b < a, c < a} ), x hat nichts zu tun mita, b, c. Dann ist ein Max-Heap:

layer 1:    x
layer 2:  b   x
layer 3: x x a c

Ersetzen Sie nach einer Pop-Operation, wie in Lehrbüchern üblich, die Wurzel durchc und verringern Sie die Größe um 1. Dann müssen wir den Baum unten an der Wurzel heapifizieren:

layer 1:    c
layer 2:  b   x
layer 3: x x a

Wir werden tauschenc undb wiec < bwerden wir nicht Und was? Seitdem haben wir noch keinen gültigen Heapb < a. Aberb kann nicht sehen"a.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage