Sunt presupunând că ești de codificare, fie în C sau C ++.
A. Un nod, în cazul în care structura este definită astfel: struct nod {nod * struct la stânga, dreapta *; }; Puteți observa că structura poate avea fie 0, 1 sau 2 frunze. Deci, max este 2, min este 0 frunze.
Înălțimea b.Minimal este zero, în care ar conține doar nodul rădăcină. Rețineți că nodul rădăcină nu contează ca o înălțime de 1. Se mai numește adâncime uneori. Aici este un algoritm pentru înălțimea:
int height(struct node *tree)
{
if (tree == NULL) return 0;
return 1 + max (height (tree->left), height (tree->right));
}
Citește mai mult: http://wiki.answers.com/Q/How_do_you_find_out_the_height_of_a_Binary_Search_Tree#ixzz1NIB17SkL
c. Scuză - mă dacă iau acest drum worng, dar eu sunt presupunând că dacă am trasat acest lucru pe o bucată de hârtie, ne - ar fi încercarea de a găsi numărul de „link - uri“ pe care le - ar folosi? În acest caz, ar fi pur și simplu numărul de noduri din arbore -1 pentru nodul rădăcină. Acest algoritm găsit pe această pagină http://forums.techarena.in/software-development/1147688.htm vă poate ajuta: verifica daca radacina este nul, atunci treci nodurile stânga și dreapta ca parametri în funcție.
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. Complexitatea de timp pentru cel mai bun caz este O (nlogn), unde n este numărul de noduri pentru a insera. Cel mai rău caz, este O (n). Este în mod direct liniar.
Dacă aveți alte întrebări doar Google, exista o multime de lucruri de știut despre copaci binar de căutare. Dar cea mai mare parte este pur și simplu recursivitatea că puteți învăța în 30 de secunde.
Sper ca asta ajuta. Noroc la examen! Am avut a mea acum câteva luni. ;)