Hvor å fjerne fra en Max-Heap?

stemmer
0

Hvis vi setter 15 i roten, hva ville være prosessen med heapify?

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

Hva bør være veien å slette 85 fra Heap?

Publisert på 10/07/2011 klokken 09:53
kilden bruker
På andre språk...                            


3 svar

stemmer
0

For å legge til du setter den nye verdien som sist (rett til 20 i ditt eksempel), og deretter prøver å fikse haugen, er at sammenligne det med foreldrene hans, hvis det er større swap og sammenligne igjen til det ikke swap er nødvendig ( eller du får root)

For å slette fjerne deg du erstatter det siste objektet (15 i deg eksempel) og fikse haugen nedover.

Svarte 10/07/2011 kl. 10:05
kilden bruker

stemmer
1

Hvis du sletter 85 og erstatte den med 15, slår du den semi-heap tilbake inn i en haug av downheaping, dvs. 15 ved roten vil "synke" langs banen for større barn. I dette tilfellet vil det bytte med 70 deretter med 65.

Edit: fordi vi alltid bytte med større barn, sikrer det vi ender opp med en gyldig haug (f.eks hvis vi byttet våre 15 med 55 i stedet for 70, ville vi ha 70 som et barn av 55 som ikke er bra)

Svarte 10/07/2011 kl. 10:08
kilden bruker

stemmer
4

Som du alltid bytte den med den største av de to (heap eiendom betyr at foreldrene er alltid større enn sine barn):

            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
Svarte 10/07/2011 kl. 10:09
kilden bruker

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