İkili yığın kanıtlanması vardır


16

Ben ispat etmeye çalışıyorum ikili yığın ile n düğümlerinin tam olarak sahip Yığın aşağıdaki şekilde oluşturulduğu göz önüne alındığında 2yaprak:n2

Her yeni düğüm percolate up ile yerleştirilir . Bu, her yeni düğümün bir sonraki kullanılabilir alt öğede oluşturulması gerektiği anlamına gelir. Bununla kastettiğim, çocukların aşağıya doğru ve soldan sağa doldurulmasıdır. Örneğin, aşağıdaki yığın:

    0
   / \
  1   2

olur sahip bu sırada inşa edildiği: 0, 1, 2. (sayılar o düğüm düzenlenen fiili verilerin hiçbir belirti verir, sadece indeksleri vardır.)

Bunun iki önemli sonucu vardır:

  1. Seviye k tamamen doldurulmadan seviyesinde düğüm bulunamazk+1k

  2. Çocuklar soldan sağa inşa edildiğinden, düzeyindeki düğümler veya aşağıdakiler gibi durumlar arasında "boş boşluk" olamaz : k+1

        0
       / \
      1   2
     / \   \
    3  4    6
    

(Bu benim tanımı gereği yasadışı yığın olurdu.) Böylece, bu yığın düşünmek için iyi bir yoldur bir olan dizi gerçekleştirilmesi herhangi dizinin yönelimler belirlenmiştir içinde "atlar" olamaz bir yığın, bir.

Yani, tümevarımın muhtemelen bunu yapmanın iyi bir yolu olacağını düşünüyordum ... Belki de n için garip bir durumla başa çıkmak zorunda kalan bir şey. Örneğin, bu tarzda inşa edilen yığınların bile, tek bir n için bir çocukla bir iç düğüme ve tek bir n için bu tür düğümlere sahip olmaması gerektiğini kullanan bazı indüksiyon. Fikirler?


@DaveClarke: Pek değil; bağlantılı soru, editörlerin referans için orada bıraktığı kısımlarındaki bir yanlış anlaşılmanın sonucudur.
Raphael

Düğüm numarası resp üzerinde indüksiyon denediniz mi? yerleştirme sayısı?
Raphael

@DaveClarke: Neden? Bu kendi başına geçerli bir soru, imho.
Raphael

BTW, sorunun yığınlarla ilgisi yok. İddia, herhangi bir ikili ağaç
Ran G.

Yanıtlar:


8

Sorunuzu doğru bir şekilde alırsam, elde edilen yığın sadece sıralı bir ikili ağaçtır, burada sıralı olarak Seviyesinin sadece k - 1 seviyesi tamamen dolduktan ve her seviye soldan işgal edildikten sonra işgal edilebileceğini söyledim sağa atlamadan.kk1

Sonra kanıt böyle gider.

  1. Mükemmel bir derinlik ağacının tam olarak 2 k + 1 - 1 düğümü vardır.k2k+11
  2. Yığının derinliğine ulaştığını varsayın . Böylece k
    1. seviyesine kadar ağaç mükemmeldir (ve orada 2 k - 1 düğümü vardır)k12k1
    2. son düzeyde, hepsi yaprak olan tam olarak düğümleri vardır.n2k+1
  3. Üzerindeki her yaprak inci düzeyinde bir ebeveyni vardır. Ayrıca, her iki ardışık yaprak aynı babaya sahiptir (belki sadece bir çocuğu olan son düğüm hariç)k
  4. Bu nedenle, üzerinden düzeyinde düğümleri k - 1 , n - 2 k + 12k1k1veliler ve geri kalanı2k-1-n-2 k +1n2k+12yapraklarıdır.2k1n2k+12
  5. Toplam yaprak miktarı verir ne gerek.
    n2k+1+2k1n2k+12

1
O Not dolu farklıdır komple farklıdır mükemmel ikili ağaçlar. Talihsiz, belirsiz ve tutarsız kelime seçimi, ama bu konuda ne yapabilirsiniz? Sanırım Wikipedia'nın tanımına bağlı kalmak mantıklı, çünkü çoğu oraya ilk bakacak mı?
Raphael

Oh, vay, bu terimleri bile bilmiyordum. Bunu işaret ettiğiniz için teşekkürler.
koştu.

"k − 1 seviyesine kadar ağaç mükemmeldir (ve orada 2 ^ k - 1 düğüme sahiptir)" ve "Bu nedenle, k − 1 seviyesindeki 2 ^ (k − 1) düğümünden çakışan ifadeler gibi görünüyor, yoksa bir şey mi kaçırıyorum?
adrian h.

2k12k12k1+2k2+...

Ah tamamen haklısın, açıklama için çok teşekkürler!
adrian h.

11

İşte daha basit bir mantık kanıtı.

Son yaprak nthindeks. Üst öğesi dizinden/2 ve benzer şekilde, ebeveyni (n/2+1)thöğesi. Böylece yapraklar endekslenirn/2 +1 ila n.

Dolayısıyla, toplam yaprak sayısı = n- (n/2) = (n/2).


1
Oldukça sezgisel ve net bir açıklama. Teşekkürler.
15:15
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.