A2A.
No he usado el árbol rojo negro. Intuitivamente, siento que hará muy poca diferencia.
Debe asegurarse de utilizar la estructura de datos adecuada. Además, debe realizar un perfil de rendimiento para descubrir los cuellos de botella de rendimiento. En Visual Studio, puedes hacer algo como esto:
- Cómo demostrar que en cada árbol de búsqueda binaria n-nodo hay exactamente n-1 rotaciones posibles
- ¿Cuál es la lógica detrás de los números de una tarjeta de regalo?
- ¿Por qué se han desarrollado los algoritmos de ordenamiento O (n ^ 2) (como el ordenamiento por inserción y el ordenamiento por burbuja) y para qué se utilizan?
- ¿Cuáles son los diferentes usos de la estructura de datos Trie?
- ¿Qué algoritmo se usa para detectar "No más interruptores posibles, barajar" en la saga Candy Crush?
Guía para principiantes de perfiles de rendimiento
Después de haber eliminado los cuellos de botella obvios de rendimiento, quizás pueda intentar obtener un mejor rendimiento con la misma estructura de datos.
Por ejemplo, puede crear un montón separado para los nodos del árbol. De esta manera, los nodos no estarán muy dispersos en las diferentes páginas de la memoria. Cuando atravieses los nodos, el acceso será más rápido. Recuerde que deberá escribir el código de la plataforma para esto. Puede consultar el libro “Windows a través de C / C ++” para ver cómo se puede hacer esto en Windows.
No estoy seguro de haber respondido la pregunta que me ha hecho.