Wie aus einem Max-Heap löschen?

stimmen
0

Wenn wir 15 in der Wurzel setzen würde, was der Prozess der heapify sein?

            85
            /\
           /  \
          /    \
        55      70
        /\      /\
       /  \    /  \
      22  33  30  65
     /\   /
   14 15 15

Was sollte die Art und Weise sein, 85 aus dem Heap zu löschen?

Veröffentlicht am 10/07/2011 um 10:53
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
0

So fügen Sie den neuen Wert zuletzt setzen (Recht auf 20 in Ihrem Beispiel), und dann versuchen, den Haufen zu beheben, ist, dass vergleicht es mit seinen Eltern, wenn es größer ist die Swap ist und vergleichen Sie wieder, bis kein Swap benötigt wird ( oder Sie erhalten zu root)

Um Sie zu löschen entfernen Sie das letzte Objekt ersetzen (15 in Ihnen Beispiel) und fixieren nach unten den Haufen.

Beantwortet am 10/07/2011 um 11:05
quelle vom benutzer

stimmen
1

Wenn Sie 85 löschen und ersetzen Sie es mit 15, drehen Sie den halb-Haufen zurück in einen Haufen von downheaping, dh die 15 an der Wurzel wird „sinken“ auf dem Weg der größeren Kinder. In diesem Fall wird es mit 65 mit 70 dann tauschen.

Edit: weil wir immer mit dem größeren Kind tauschen, es garantiert, dass wir mit einem gültigen Heap am Ende (zB wenn wir unsere 15 mit 55 statt 70 ausgetauscht, wir 70 als ein Kind von 55 haben würden, das ist nicht gut)

Beantwortet am 10/07/2011 um 11:08
quelle vom benutzer

stimmen
4

Wie Sie es immer mit dem größeren der beiden Swapping sind (Heap-Eigenschaft bedeutet, dass die Eltern als seine Kinder immer größer ist):

            15
            /\
           /  \
          /    \
        55      70
        /\      /\
       /  \    /  \
      22  33  30  65
     /\   
   14 15

            70
            /\
           /  \
          /    \
        55      15
        /\      /\
       /  \    /  \
      22  33  30  65
     /\   
   14 15

            70
            /\
           /  \
          /    \
        55      65
        /\      /\
       /  \    /  \
      22  33  30  15
     /\   
   14 15
Beantwortet am 10/07/2011 um 11:09
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more