Binarne drzewo poszukiwań

głosy
0

Mój profesor pisał kilka pytań ocenę z egzaminu końcowego. I nie wydaje się znaleźć odpowiedź na to. Każda pomoc będzie bardzo mile widziane!

Rozważmy binarne drzewo zn węzłów:
a. Jaka jest minimalna i maksymalna liczba węzłów liściowych?
b. Jaka jest minimalna i maksymalna wartość wysokości?
do. Ile wskaźniki są używane przez drzewo (nie licząc pustych wskaźników i przy założeniu, że nie zachować pole, które przechowuje rodzica)?

*re. Co jest najgorsze opieka czas pracy do wkładania do n węzłów (początkowo pustego) binarne drzewo poszukiwań?

Utwórz 24/05/2011 o 18:27
źródło użytkownik
W innych językach...                            


4 odpowiedzi

głosy
0

Spróbuj różnych drzew rysunek na papierze i zobacz co masz. Pamiętaj, że binarne drzewo jest zdefiniowany jako drzewo, gdzie każdy węzeł może mieć 0 (w tym przypadku jest to liść), 1 lub 2 dzieci. Za pytanie należy zbadać bardzo niezrównoważony przypadek 1 dziecka na węźle.

Odpowiedział 24/05/2011 o 18:31
źródło użytkownik

głosy
0

Rozważać:

Jeśli chcesz, aby zmaksymalizować liczbę liści, chcesz jak kilka węzłów wewnętrznych jak to możliwe (i na odwrót, jeśli starasz się zminimalizować liczbę liści). W jaki sposób można tego dokonać?

Aby uzyskać maksymalną wysokość drzewa, można umieścić jak kilka węzłów na każdym poziomie, jak to możliwe. Jak możesz to robić? Odwrotnie, na minimalnej wysokości, jaka jest maksymalna liczba węzłów, które można umieścić na każdym poziomie?

Ile istnieją sposoby, aby dostać się do każdego węzła drzewa? Tak więc, jak wiele wskazówek trzeba?

Odpowiedział 24/05/2011 o 18:33
źródło użytkownik

głosy
0

Zakładam, że jesteś albo kodowanie w C lub C ++.

za. Węzeł, jeżeli struktura jest zdefiniowana w następujący sposób: struct węzeł {węzła struct * lewy, prawy *; }; Można zauważyć, że struktura może albo mieć 0, 1 lub 2 liście. Tak, max 2 min wynosi 0 liści.

Wysokość b.Minimal wynosi zero, w którym będzie zawierać tylko węzeł główny. Należy zauważyć, że węzeł główny nie liczy się jako wysokości 1. Jest również nazywana głębokość w niektórych momentach. Oto algorytm wysokości:

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

Czytaj więcej: http://wiki.answers.com/Q/How_do_you_find_out_the_height_of_a_Binary_Search_Tree#ixzz1NIB17SkL

do. Wybacz mi, jeśli biorę tego worng sposób, ale jestem przy założeniu, gdybyśmy odwzorowane to na kartce papieru, którą starali się znaleźć liczbę „linków”, które używamy? W takim przypadku, że to po prostu liczba węzłów w drzewie -1 do węzła głównego. Ten algorytm znaleźć na tej stronie http://forums.techarena.in/software-development/1147688.htm może pomóc: sprawdź czy korzeń jest zerowy, a następnie przejść w lewo i prawo węzły jako parametry do funkcji.

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;

re. Złożoność najlepszym przypadku czas O (nlogn), gdzie n to liczba węzłów wkładki. W najgorszym przypadku, O (n). Jest bezpośrednio liniowy.

Jeśli masz jakiekolwiek inne pytania, po prostu google, jest mnóstwo rzeczy wiedzieć o binarne drzewo poszukiwań. Ale większość z nich jest po prostu rekurencji, że można nauczyć się w ciągu 30 sekund.

Mam nadzieję, że to pomoże. Powodzenia na egzaminie! Miałem kopalni kilka miesięcy temu. ;)

Odpowiedział 24/05/2011 o 18:39
źródło użytkownik

głosy
1

  • Maksymalna liczba liści jest ceil (n / 2). Liczba minimalna wynosi 1
  • Maksymalna wysokość N. Minimalna jest podłoga (log_2 (n))
Odpowiedział 24/05/2011 o 18:44
źródło użytkownik

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