Hoe te verwijderen uit een Max-Heap?

stemmen
0

Als we 15 in de wortel, wat zou het proces van heapify zijn?

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

Wat moet de weg naar 85 verwijderen uit de Heap zijn?

De vraag is gesteld op 10/07/2011 om 10:53
bron van user
In andere talen...                            


3 antwoorden

stemmen
0

Om toe te voegen je de nieuwe waarde als laatste (rechts tot 20 in uw voorbeeld), en dan probeer je de hoop op te lossen, dat is te vergelijken met zijn ouders, als het groter is de swap en opnieuw te vergelijken tot er geen swap nodig is ( of je naar root)

Om verwijderen verwijderen uu het laatste object vervangen (15 in u voorbeeld) en neerwaarts zet de heap.

antwoordde op 10/07/2011 om 11:05
bron van user

stemmen
1

Als u 85 te schrappen en te vervangen door 15, de semi-heap terug te zetten in een heap door downheaping, dat wil zeggen de 15 bij de wortel zal "sink" langs de weg van de grotere kinderen. In dit geval zal het ruilen met 70 en vervolgens met 65.

Edit: omdat we altijd ruilen met de grotere kind, het zorgt ervoor dat we eindigen met een geldige heap (bijvoorbeeld als we wisselden onze 15 met 55 in plaats van 70, zouden we 70 hebben als een kind van 55 die is niet goed)

antwoordde op 10/07/2011 om 11:08
bron van user

stemmen
4

Zoals je altijd ruilen met de grootste van de twee (heap eigenschap betekent dat de ouder is altijd groter dan de kinderen):

            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
antwoordde op 10/07/2011 om 11:09
bron van user

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