¿Por qué los árboles binarios de búsqueda?

votos
6

Estaba leyendo árbol binario de búsqueda y estaba pensando que ¿por qué necesitamos BST en absoluto? Todas las cosas por lo que yo sé también pueden ser ordenados lograr utilizando matrices simples. Para por ejemplo, - Con el fin de construir una BST que tiene n elementos, que requiere n*O(log n)es decir, tiempo O(nlog n)y el tiempo de búsqueda es O(log n). Pero esto también se puede lograr usando matriz. Podemos tener una matriz ordenada (requiere O(nlog n)tiempo), y el tiempo de búsqueda en eso también O(log n), es decir, algo binario de búsqueda. Entonces, ¿por qué necesitamos otra estructura de datos en absoluto? ¿Hay cualquier otro uso / aplicación de BST lo que las hace tan especial?

--Ravi

Publicado el 14/10/2010 a las 16:28
fuente por usuario
En otros idiomas...                            


4 respuestas

votos
4

¿Qué hay de tiempo de inserción ordenados?

Respondida el 14/10/2010 a las 16:30
fuente por usuario

votos
1

En la programación de gráficos Si ha extendido objeto (es decir, que representan un intervalo en cada dimensión y no sólo un punto) puede agregar al nivel más pequeño de un árbol binario (típicamente un octree) dónde encajan en su totalidad.

Y si no pre-calcular el árbol / SortedList el tiempo de inserción aleatoria O (n) en una lista puede ser prohibitivamente lento. tiempo de inserción en un árbol en el otro lado sólo es O (log (n)).

Respondida el 14/10/2010 a las 16:36
fuente por usuario

votos
9

Las matrices son grandes si usted está hablando de una sola escritura, leer muchas veces el tipo de interacciones. Es cuando te pones a la inserción, el intercambio, y la supresión en el que BST realmente empieza a brillar en comparación con una matriz. Ya que están nodo basa, en lugar de basarse en un trozo contiguo de memoria, el costo de mover un elemento, ya sea en la colección o fuera de la colección es rápido, manteniendo la naturaleza ordenada de la colección.

Pensar en ella como lo haría la diferencia en la inserción entre las listas enlazadas frente a las matrices. Esta es una simplificación pero pone de relieve un aspecto de la ventaja que he señalado más arriba.

Respondida el 14/10/2010 a las 16:53
fuente por usuario

votos
7

Imagine que tiene una matriz con un millón de elementos.

Desea insertar un elemento en la posición 5.

Así se inserta al final de la matriz y luego especie.

Digamos que la matriz está llena; eso es O (n log n), que es de 1.000.000 * 6 = 6.000.000 operaciones.

Imagine que tiene un árbol de equilibrado.

Eso es O (log n), además de un bit para el equilibrio = 6 + un poco, lo llaman 10 operaciones.

Así pues, usted acaba de pasar de 6.000.000 operaciones de clasificación de la matriz. A continuación, desea encontrar ese elemento. ¿Qué haces? búsqueda binaria - O (log n) - que es exactamente lo mismo que lo que vas a hacer cuando se busca en el árbol!

Ahora imagine que desea asignar elemento -another-.

La matriz está llena! ¿qué haces? re-asignar la matriz con n elementos adicionales y memcpy el lote? que realmente quiere memcpy 4MBytes?

En un árbol, que acaba de añadir otro elemento ...

Respondida el 16/10/2010 a las 10:14
fuente por usuario

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