Je suppose que vous êtes soit en codage C ou C ++.
une. Un nœud, si la structure est définie comme suit: noeud struct {noeud struct * gauche, * droit; }; Vous pouvez observer que la structure peut avoir soit 0, 1 ou 2 feuilles. Ainsi, le maximum est de 2, min est 0 feuilles.
b.Minimal hauteur est égale à zéro, dans lequel seul contiendrait le nœud racine. Notez que le nœud racine ne compte pas comme une hauteur de 1. Il est aussi appelé la profondeur parfois. Voici un algorithme pour la hauteur:
int height(struct node *tree)
{
if (tree == NULL) return 0;
return 1 + max (height (tree->left), height (tree->right));
}
En savoir plus: http://wiki.answers.com/Q/How_do_you_find_out_the_height_of_a_Binary_Search_Tree#ixzz1NIB17SkL
c. Pardonnez - moi si je prends ce la façon worng, mais je suppose si nous cartographié sur un morceau de papier, nous aimerions essayer de trouver le nombre de « liens » que nous utiliserions? Dans ce cas, ce serait simplement le nombre de noeuds dans l'arborescence -1 pour le nœud racine. Cet algorithme se trouve sur cette page http://forums.techarena.in/software-development/1147688.htm peut vous aider à : vérifier si la racine est nulle, faites passer les nœuds gauche et à droite en tant que paramètres dans la fonction.
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;
ré. La complexité du temps pour le meilleur des cas est O (nlogn) où n est le nombre de noeuds à insérer. Le pire des cas, est en O (n). Il est directement linéaire.
Si vous avez d'autres questions google juste, il y a beaucoup de choses à savoir sur les arbres binaires de recherche. Mais la majeure partie est tout simplement récursion que vous pouvez apprendre en 30 secondes.
J'espère que ça aide. Bonne chance pour ton éxamen! J'ai eu le mien il y a quelques mois. ;)