İkili Arama Ağacı

oy
0

Profesörüm Final sınavı için bazı yorum soruları yayınlanmıştır. Ve bunun için cevaplar bulmak için görünmüyor olabilir. Herhangi bir yardım büyük takdir edilecektir!

N düğümlerinin bir ikili ağaç düşünün:
a. Yaprak düğümlerinin minimal ve maksimal sayısı nedir?
b. Yüksekliğinin minimal ve maksimal değeri nedir?
c. Kaç işaretçileri ağacı (boş işaretçiler saymıyoruz ve ebeveyn depolayan bir alan tutmuyorum varsayarak değil) tarafından kullanılmaktadır?

* D. Bir (başlangıçta boş) ikili arama ağacına n düğümleri eklemek için kötü bakım çalışma süresi nedir?

Oluştur 24/05/2011 saat 18:27
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
0

Bir kağıt üzerine çeşitli ağaçlar çizim deneyin ve ne olsun bakın. Bir ikili ağaç her düğüm 0 olabilir bir ağaç olarak tanımlandığını unutmayın, 1 veya 2 çocuk (ki bu durumda bu bir yaprak olduğunu). Sorunuzun için, düğüm başına 1 çocuk çok dengesiz durumda incelemek gerekir.

Cevap 24/05/2011 saat 18:31
kaynak kullanıcı

oy
0

Düşünmek:

Eğer yaprakların sayısını arttırmak için çalışıyorsanız, siz kaç iç olabildiğince düğümleri (ve yaprakların sayısını en aza indirmek çalışıyorsanız tersini) istiyorum. Bunu nasıl başarabilirsiniz?

maksimal yüksekliğinin bir ağaç elde etmek için, mümkün olduğunca her düzeyde olduğunca az düğümleri koyacağım. Nasıl yaparsın? Tersine, asgari yükseklik için, her seviyede koyabilirsiniz düğümlerin sayısı nedir?

Bir ağacın her düğüme gidilir kaç yol vardır? Böylece kaç işaretçiler gerekiyor?

Cevap 24/05/2011 saat 18:33
kaynak kullanıcı

oy
0

Ben ++ Eğer kodlama C veya C ya farzederek söylüyorum.

a. Bir düğüm, bir yapı, bu gibi tanımlanmış olması durumunda: yapı düğüm {yapı düğüm sola *, * hakkı; }; Sen yapısı 0, 1 veya 2 yapraklı ya o gözlemleyebiliriz. Yani, maksimum 2, dk 0 yapraklardır.

b.Minimal yüksekliği sadece kök düğümü içerecektir ki burada sıfırdır. Kök düğüm Ayrıca zaman zaman derinliği denir 1. yükseklikte sayılmaz unutmayın. İşte yüksekliği için bir algoritma şudur:

    int height(struct node *tree) 
    { 
    if (tree == NULL) return 0;
    return 1 + max (height (tree->left), height (tree->right)); 
    }

Devamı: http://wiki.answers.com/Q/How_do_you_find_out_the_height_of_a_Binary_Search_Tree#ixzz1NIB17SkL

c. Afedersiniz ben bu worng anlama ama biz bir kağıt parçası üzerine bu planladım ben varsayarak ediyorsam, biz kullanmak istiyorsunuz "bağlantılar" sayısını bulmak için çalışıyor olurdum? Bu durumda, sadece ağacın -1 kök düğüm için düğüm sayısı olurdu. Bu sayfada bulunan bu algoritma http://forums.techarena.in/software-development/1147688.htm size yardımcı olabilir: kontrol kök null ise, o zaman işleve parametre olarak sol ve sağ düğümleri geçmektedir.

int countnodes(Node* root)
{
    if (root == null || k<=0)
    {
      return 0;
    } else {
        return 1 + count(root.left,k-1) + count(root.right,k-1);
    }
}
// remember to subtract one at the end.
int totalnodes = countnodes(root) - 1;

d. En iyi durumda zaman karmaşıklığı O (nlogn) burada n eklemek için düğüm numarasıdır. En kötü durumda, O (n) 'dir. Doğrudan doğrusaldır.

Başka sorular sadece google varsa, ikili arama ağaçları hakkında bilmek şeylerin bol. Ama bunun çoğu 30 saniye içinde öğrenebilir tekrarlama olunmaz.

Umarım bu yardımcı olur. Sınavında iyi şanslar! Birkaç ay önce mayın vardı. ;)

Cevap 24/05/2011 saat 18:39
kaynak kullanıcı

oy
1

  • yaprak sayısı ceil (N / 2) 'dir. en az 1 numara
  • maksimum yükseklik: n. en az kat (log_2 (n))
Cevap 24/05/2011 saat 18:44
kaynak kullanıcı

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