Jak usunąć z Max-Heap?

głosy
0

Jeśli zbierzemy 15 w korzeniu, co byłoby procesem heapify?

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

Jaki powinien być sposób, aby usunąć 85 z Sterty?

Utwórz 10/07/2011 o 10:53
źródło użytkownik
W innych językach...                            


3 odpowiedzi

głosy
0

Aby dodać umieścić nową wartość jako ostatni (prawo do 20 w przykładzie), a następnie spróbuj naprawić sterty, który jest porównanie go z jego rodzica, jeśli jest większy swap i porównać ponownie dopóki nie ma potrzeby wymiany ( czy można dostać się do korzenia)

W celu usunięcia usunąć wymienić ostatniego obiektu (15 w was przykład) i naprawić sterty dół.

Odpowiedział 10/07/2011 o 11:05
źródło użytkownik

głosy
1

Jeśli usuniesz 85 i zastąpienie go 15, skręcić w semi-sterty powrotem na stercie przez downheaping, czyli 15 u nasady będzie „zatopić” na ścieżce większych dzieci. W tym przypadku będzie to zamienić z 70 wtedy z 65 lat.

Edit: bo jesteśmy zawsze zamiana z większym dzieckiem, zapewnia nam skończyć z ważnego sterty (np gdybyśmy zamienili nasz 15 z 55 zamiast 70, to mamy 70 jako dziecko 55 lat, które nie jest dobre)

Odpowiedział 10/07/2011 o 11:08
źródło użytkownik

głosy
4

Jak zawsze wymieniając go z większym z dwóch (mienia sterty oznacza, że ​​rodzic jest zawsze większy niż jego dzieci):

            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
Odpowiedział 10/07/2011 o 11:09
źródło użytkownik

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