¿Cuáles son los beneficios del árbol de búsqueda binario?

  • Si implementamos un árbol de búsqueda binario equilibrado, siempre podemos mantener el costo de insert (), delete (), lookup () a O (logN) donde N es el número de nodos en el árbol, por lo que el beneficio es que las búsquedas se puede hacer en tiempo logarítmico, lo que importa mucho cuando N es grande.
  • Tenemos un pedido de claves almacenadas en el árbol. Cada vez que necesitemos atravesar el orden creciente (o decreciente) de las teclas, solo tenemos que hacer el recorrido en orden (e invertir en orden) en el árbol.
  • Esto es diferente a la tabla hash donde el costo de búsqueda se puede amortizar O (1) pero no hay pedidos de artículos almacenados en la tabla hash. No hay una forma directa / ingenua de iterar sobre todas las claves en un orden ordenado.
  • Otra cosa clave en la que centrarse es el “costo amortizado de O (1)”. Con las tablas hash, necesitamos dimensionarlas adecuadamente, de lo contrario, la eficiencia de todas las operaciones (especialmente la búsqueda) se degradará. Por otro lado, con árboles de búsqueda binarios balanceados, todas las operaciones (insertar, buscar, eliminar) están garantizadas para trabajar en O (logN) complejidad de tiempo.
  • Podemos implementar estadísticas de pedidos con el árbol de búsqueda binario: el enésimo elemento más pequeño y el más grande. Esto se debe a que es posible ver la estructura de datos como una matriz ordenada.
  • También podemos hacer consultas de rango: encontrar claves entre N y M (N <= M).
  • BST también se puede utilizar en el diseño de asignadores de memoria para acelerar la búsqueda de bloques libres (fragmentos de memoria) e implementar algoritmos de mejor ajuste donde nos interese encontrar el fragmento libre más pequeño con un tamaño mayor o igual al tamaño especificado en solicitud de asignación.
  • Lo principal a recordar es que siempre debemos implementar un árbol de búsqueda binaria equilibrado: árbol AVL, árbol Rojo-Negro, árbol Splay. De lo contrario, el costo de las operaciones puede no ser logarítmico y degenerar en una búsqueda lineal en una matriz.

Está en el nombre. Los árboles de búsqueda binarios permiten una búsqueda rápida de artículos.

Considere una matriz A de n elementos. Si busca k en A, el peor de los casos es que todos los elementos en A serán examinados. Eso significa la complejidad temporal de la búsqueda es O (n).

Ahora considere un árbol binario T. Una búsqueda de k en T solo tendrá que buscar en la mayoría de los elementos h, donde h es la altura del árbol. Como el tiempo crece con la altura, la complejidad es O (log n), una gran mejora con respecto a O (n).

More Interesting

¿Qué es un algoritmo eficiente para el agrupamiento k-means donde k es 2 y la dimensión es una, con o sin pesos?

¿Cómo se puede explicar el algoritmo para la conversión de un número binario a un hexadecimal (código fuente incluido)?

¿Existe un algoritmo para identificar el género basado en el nombre?

¿Se puede ordenar una lista de números en un número menor de pases que el indicado por la notación Big-O?

Dado un problema, ¿cómo puedo decidir si usar un enfoque codicioso o dividir y conquistar?

¿Cuáles son algunas optimizaciones comunes que los clientes de GPS como Google Maps usan además de los algoritmos elementales de ruta más corta como la búsqueda A *?

¿Cuáles son los beneficios del algoritmo de retropropagación frente a la estimación numérica del gradiente?

¿Cómo se imprime el reverso de una pila de objetos iterables?

¿Los ingenieros de software de Google, Amazon, etc. utilizan estructuras de datos y algoritmos en el desarrollo de aplicaciones en tiempo real?

¿Cómo se puede incorporar un algoritmo adaptativo en un sistema operativo?

Cómo argumentar la corrección del tipo radix

Programación competitiva: dado un polígono y tres cuadrados congruentes alineados con el eje, ¿puede determinar en tiempo polinómico si el polígono puede cubrirse por completo de manera que los tres cuadrados, que pueden superponerse, cubran una cantidad igual de área en el polígono?

¿Es posible escribir un método que muestre todos los elementos en una lista enlazada circular?

¿Qué significa la subestructura óptima en términos simples?

Cómo escribir un programa ruby ​​para mostrar los números de Armstrong en una matriz (siendo la matriz; Números = [123,124,153,370,234,23,45]