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. ;)