Estoy asumiendo que usted está bien codificación en C o C ++.
a. Un nodo, si la estructura se define así: struct nodo {nodo struct * a la izquierda, derecha *; }; Se puede observar que la estructura puede tener ya sea 0, 1 ó 2 hojas. Por lo tanto, el máximo es 2, min es 0 hojas.
b.Minimal altura es cero, en el que sólo contendría el nodo raíz. Tenga en cuenta que el nodo raíz no cuenta como una altura de 1. También se le llama a veces la profundidad. Aquí es un algoritmo para la altura:
int height(struct node *tree)
{
if (tree == NULL) return 0;
return 1 + max (height (tree->left), height (tree->right));
}
Leer más: http://wiki.answers.com/Q/How_do_you_find_out_the_height_of_a_Binary_Search_Tree#ixzz1NIB17SkL
do. Perdóneme si tomo esto de la manera worng, pero estoy asumiendo que si hemos mapeado esto en un pedazo de papel, estaríamos tratando de encontrar el número de "enlaces" que nos gustaría usar? En ese caso, sería simplemente el número de nodos en el árbol -1 para el nodo raíz. Este algoritmo se encuentran en esta página http://forums.techarena.in/software-development/1147688.htm puede ayudarle a: comprobar si la raíz es nulo, a continuación, pasar los nodos izquierdo y derecho como parámetros en la función.
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. La complejidad de tiempo para el mejor caso es O (nlogn) donde n es el número de nodos a insertar. El peor de los casos, es O (n). Es directamente lineal.
Si tiene alguna otra pregunta apenas Google él, hay un montón de cosas que debe saber sobre árboles binarios de búsqueda. Pero la mayor parte es simplemente la recursividad que se puede aprender en 30 segundos.
Espero que esto ayude. ¡Buena suerte en tu examen! Tuve la mía hace unos meses. ;)