¿Cuáles son las limitaciones de los árboles de búsqueda binarios?

Los BST tienen una complejidad de tiempo promedio de ϴ (log (n)) para insertar, eliminar y encontrar, pero en el peor de los casos, todas estas operaciones tienen una complejidad de tiempo de O (n).

No se garantiza que los BST sean equilibrados, por lo que un BST podría ser el siguiente:

En la primera imagen, insertar un nodo con un valor mayor que 5 requeriría que el BST atraviese cada nodo hasta finalmente insertar el nuevo nodo mayor como el hijo derecho del nodo que contiene 5. Insertar un nodo con un valor menor que 1 requeriría un proceso similar en la segunda imagen. En ambos casos, cada nodo tenía que iterarse y, por lo tanto, la operación estaría en una escala de O (n).

La complejidad del tiempo se puede mejorar para garantizar O (log (n)); sin embargo, esto requeriría que el usuario inserte y elimine nodos con cuidado o que se implementen inserciones y eliminaciones más costosas para mantener un BST de equilibrio automático.

Considere la entrada: 100, 90, 80, 70, 60, 50, 40 … 10.construir bst para la siguiente entrada. Primero se insertará 100, luego 90 es obviamente menor que 100 irá al lado izquierdo. Ahora hazlo unidad, insertarás todos los elementos. Al final obtendrás 10 en el extremo inferior izquierdo. No solo leas. hazlo . Ahora digamos que la consulta del usuario busca el 10. Por lo tanto, debe pasar por 10 elementos, es decir, la complejidad del tiempo O (n). Funciona como buscar en una matriz lineal. Esto es desventaja. Bst no está equilibrado. Para equilibrarlo, hemos hecho árboles avl que son árboles equilibrados.

  • Inserción / eliminación más lenta de elementos.
  • No es una gran opción para árboles lineales (árbol degenerado, más o menos una lista vinculada ordenada)