Árbol de búsqueda binaria

votos
0

Mi profesor ha escrito algunas preguntas de repaso para el examen final. Y me parece que no puede encontrar las respuestas para ello. ¡Cualquier ayuda será apreciada!

Considere un árbol binario de n nodos:
a. ¿Cuál es el número mínimo y máximo de los nodos de la hoja?
segundo. ¿Cuál es el valor mínimo y máximo de la altura?
do. ¿Cuántas punteros son utilizados por el árbol (sin contar los punteros nulos, y suponiendo que no mantenemos un campo que almacena el padre)?

*re. ¿Cuál es el peor tiempo de funcionamiento de cuidado para la inserción de n nodos en un (inicialmente vacía) árbol binario de búsqueda?

Publicado el 24/05/2011 a las 18:27
fuente por usuario
En otros idiomas...                            


4 respuestas

votos
0

Intenta dibujar varios árboles en un papel y ver lo que hay. Recuerde que un árbol binario se define como un árbol donde cada nodo puede tener 0 (en cuyo caso se trata de una hoja), 1 o 2 niños. Para su pregunta que debe examinar el caso muy desequilibrada de 1 niño por nodo.

Respondida el 24/05/2011 a las 18:31
fuente por usuario

votos
0

Considerar:

Si usted está tratando de maximizar el número de hojas, que desea el menor número de nodos internos como sea posible (y al revés si usted está tratando de reducir al mínimo el número de hojas). ¿Cómo se puede lograr eso?

Para conseguir un árbol de altura máxima, que voy a poner el menor número de nodos en cada nivel posible. Como puedes hacer eso? Por el contrario, para la altura mínima, lo que es el número máximo de nodos que puede poner en cada nivel?

¿Cuántas maneras hay para llegar a cada nodo de un árbol? Por lo tanto, el número de punteros se puede pedir?

Respondida el 24/05/2011 a las 18:33
fuente por usuario

votos
0

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

Respondida el 24/05/2011 a las 18:39
fuente por usuario

votos
1

  • El número máximo de hojas es ceil (n / 2). El número mínimo es 1
  • La altura máxima es n. El mínimo es de piso (log_2 (n))
Respondida el 24/05/2011 a las 18:44
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more