Ich nehme an, Sie sind entweder Codierung in C oder C ++.
ein. Ein Knoten, wenn die Struktur ist wie folgt definiert: struct {struct Knoten node * links, rechts *; }; Sie können beobachten, dass die Struktur entweder 0 haben kann, 1 oder 2 Blätter. So ist der max 2 ist, min 0 Blätter.
b.Minimal Höhe Null ist, in dem nur der Wurzelknoten enthalten würde. Beachten Sie, dass der Wurzelknoten nicht als eine Höhe von 1 zählt auch Tiefe manchmal Es nennt. Hier ist ein Algorithmus für die Höhe:
int height(struct node *tree)
{
if (tree == NULL) return 0;
return 1 + max (height (tree->left), height (tree->right));
}
Lesen Sie mehr: http://wiki.answers.com/Q/How_do_you_find_out_the_height_of_a_Binary_Search_Tree#ixzz1NIB17SkL
c. Entschuldigen Sie , wenn ich nehme dies die worng Art und Weise, aber ich gehe davon aus, wenn wir dies auf einem Stück Papier vorgezeichnet, wir würden versuchen , die Anzahl der „Links“ zu finden , die wir verwenden würden? In diesem Fall würde es einfach sein , die Anzahl der Knoten im Baum -1 für Wurzelknoten. Dieser Algorithmus auf dieser Seite gefunden http://forums.techarena.in/software-development/1147688.htm können Ihnen helfen: überprüfen , ob root null ist, dann die linke und rechte Knoten als Parameter an die Funktion übergeben.
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. Die Zeitkomplexität für die besten Fall ist O (n log n), wobei n die Anzahl der Knoten ist einzufügen. Der schlimmste Fall ist O (n). Es ist direkt linear.
Wenn Sie Fragen haben, es einfach mal googlen, gibt es viele Dinge, über binäre Suchbäume kennen. Aber das meiste davon ist einfach Rekursion, die Sie in 30 Sekunden lernen.
Ich hoffe das hilft. Viel Glück auf Ihre Prüfung! Ich hatte meine vor ein paar Monaten. ;)