Nasıl Max-Heap silmek?

oy
0

Biz kök 15 koyarsanız ne heapify süreci olurdu?

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

Ne Heap dan 85 silmek için bir yol olmalıdır?

Oluştur 10/07/2011 saat 10:53
kaynak kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
0

Eğer (sizin örnekte sağa 20) son olarak yeni bir değer koymak ve sonra yığın düzeltmeye çalışacağım eklemek için söz konusu (o takas büyükse, onun ebeveyn ile karşılaştırmak ve hiçbir takas gereklidir kadar tekrar karşılaştırmak ya siz) köküne inmek

silmek için size (size örnekte 15) geçen nesneyi değiştirmek ve aşağı doğru yığın düzeltmek kaldırın.

Cevap 10/07/2011 saat 11:05
kaynak kullanıcı

oy
1

Eğer 85 silebilir ve 15 ile değiştirin, daha büyük çocukların yolu boyunca "lavabo" olacaktır kökünde 15, yani downheaping tarafından yığınına geri yarı yığın açın. Bu durumda 65 ile daha sonra 70 ile takas olur.

Düzenleme: her zaman daha büyük çocukla takas, bunun nedeni (bizim 15 yerine 70 55 ile takas eğer, hiçbir iyi 55 bir çocuk olarak 70 olurdu mesela) geçerli bir yığın ile bitirmek sağlar

Cevap 10/07/2011 saat 11:08
kaynak kullanıcı

oy
4

her zaman iki büyük ile takas edilir gibi (yığın özelliği ebeveyn kendi çocuklarından daha hep daha büyük olduğu anlamına gelir):

            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
Cevap 10/07/2011 saat 11:09
kaynak kullanıcı

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