Definitivamente, el DS para este propósito exacto es un árbol de búsqueda binario. Realiza todas esas operaciones en tiempo O (log N). Sin embargo, le recomendaría que use un BST de equilibrio automático, de lo contrario, podría convertirse en una lista vinculada si inserta elementos en órdenes no aleatorias, convirtiéndolo en una operación O (N).
Aquí hay algunas notas de conferencias sobre estos: https://courses.csail.mit.edu/6….
Estructuras de datos y algoritmos II
- Cómo desarrollar el pensamiento algorítmico para programar
- ¿Dónde puedo encontrar un algoritmo de relevancia marginal máxima en Python para la eliminación de redundancia en dos documentos?
- ¿Cuál es el problema conmigo si puedo decir cómo funciona el algoritmo pero no puedo escribir el programa para el mismo? ¿Cómo puedo deshacerme de él? ¿Por favor ayuda?
- ¿Cuál es la diferencia entre recursividad e iteraciones brevemente?
- ¿El algoritmo de Kruskal resuelve siempre el problema del vendedor ambulante?
https://www.cs.princeton.edu/~rs…
Este tipo de estructura se usa muy a menudo para cosas como colas de prioridad.
También tenga en cuenta que es posible implementar un árbol binario dentro de una matriz en lugar de asignar dinámicamente cada nodo. Entonces, si le preocupan cosas como las optimizaciones de caché de la CPU, no es imposible de lograr también. Esto es especialmente posible si usa algún tipo de versión de equilibrio automático, ya que el espacio desperdiciado en la matriz se minimizaría.
Además, es posible usar una fórmula para encontrar el índice de un nodo específico en lugar de necesitar un índice para reemplazar los punteros de la asignación dinámica, es decir, podría ser más eficiente en la memoria. Encontrar la ubicación de un nodo padre en un árbol binario implementado en una matriz