Hogyan lehet törölni egy Max-Heap?

szavazat
0

Ha teszünk 15 a gyökér, hogy mi lenne a folyamat heapify?

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

Mi legyen a módja annak, hogy törölje a 85 a kupac?

A kérdést 10/07/2011 10:53
a forrás felhasználó
Más nyelveken...                            


3 válasz

szavazat
0

Hozzáadni fel az új értéket az utolsó (jobb oldali 20 a példa), majd megpróbálja kijavítani a kupac, hogy hasonlítsa össze a szülő, ha nagyobb swap és hasonlítsa össze újra, amíg a swap nincs szükség ( vagy kapsz root)

Annak érdekében, hogy törölje eltávolítása kicseréli az utolsó objektum (15 benned például), és rögzítse a kupac lefelé.

Válaszolt 10/07/2011 11:05
a forrás felhasználó

szavazat
1

Ha törli a 85 és cserélje ki 15, akkor viszont a félig kupac vissza egy kupac downheaping, azaz a 15-én a gyökér lesz „mosogató” a pálya mentén a nagyobb gyerekek. Ebben az esetben ez a csere 70, majd 65.

Edit: azért, mert mindig kicserélni a nagyobb gyerek, ez biztosítja a végén egy érvényes halom (pl ha cserélték a 15 55 helyett 70, mi lett volna a 70, mint a gyermek 55 ami nem jó)

Válaszolt 10/07/2011 11:08
a forrás felhasználó

szavazat
4

Ahogy mindig csere azt a nagyobbik (kupac tulajdonság azt jelenti, hogy a szülő mindig nagyobb, mint a gyerek):

            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
Válaszolt 10/07/2011 11:09
a forrás felhasználó

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