Cum se șterge de la un Max-Heap?

voturi
0

Dacă am pus 15 în rădăcină, ceea ce ar fi procesul de heapify?

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

Care ar trebui să fie modul de a șterge 85 din mormanul?

Întrebat 10/07/2011 la 10:53
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
0

Pentru a adăuga vă pune noua valoare ca ultima (dreptul la 20 în exemplul dvs.), și apoi încercați să stabilească heap, adică compara-l cu părintele său, în cazul în care este mai mare swap-și compara din nou, până când nu este nevoie de schimb ( sau ajunge la rădăcină)

Pentru a șterge eliminați înlocuiți ultimul obiect (15 în tine exemplu) și fixați haldei în jos.

Publicat 10/07/2011 la 11:05
sursa de către utilizator

voturi
1

Dacă ștergeți 85 și înlocuiți-l cu 15, porniți semi-grămada înapoi într-un morman de downheaping, adică 15 la rădăcină va „scufunda“ de-a lungul calea copiilor mai mari. În acest caz, se va schimba cu 70, apoi cu 65 de ani.

Editare: pentru că suntem mereu pompare cu copilul mai mare, asigură am termina cu un morman valabil (de exemplu, dacă am schimbat nostru de 15 cu 55 în loc de 70, am avea 70 ca un copil de 55 care nu este bun)

Publicat 10/07/2011 la 11:08
sursa de către utilizator

voturi
4

Pe măsură ce sunt întotdeauna pompare cu cea mai mare dintre cele două (proprietatea heap înseamnă că părintele este întotdeauna mai mare decât copiii săi):

            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
Publicat 10/07/2011 la 11:09
sursa de către utilizator

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