¿Cuál es más eficiente?
Vago y difícil de responder. Las complejidades computacionales están bien definidas. Si eso es lo que quiere decir con eficiencia, no hay un debate real. De hecho, todos los buenos algoritmos vienen con pruebas y factores de complejidad.
Si quiere decir "tiempo de ejecución" o "uso de memoria", deberá comparar las implementaciones reales. Luego, el lenguaje, el tiempo de ejecución, el sistema operativo y otros factores entran en juego, lo que hace que la pregunta sea difícil de responder.
¿Cuál es más fácil de implementar?
Vago y difícil de responder. Algunos algoritmos pueden parecerle complejos, pero triviales para mí.
¿Cuál se usa con más frecuencia?
Vago y difícil de responder. Primero está el "¿por quién?" parte de esto? ¿Haskell solo? ¿Qué pasa con C o C ++? En segundo lugar, está el problema del software propietario en el que no tenemos acceso a la fuente para realizar una encuesta.
Pero crucialmente, ¿cuál me recomiendan?
Supongo que esto pertenece aquí porque está abierto a debate.
Correcto. Dado que sus otros criterios no son muy útiles, esto es todo lo que obtendrá.
Puede obtener el origen de una gran cantidad de algoritmos de árbol. Si desea aprender algo, simplemente puede implementar cada uno que pueda encontrar. En lugar de pedir una "recomendación", simplemente recopile todos los algoritmos que pueda encontrar.
Aquí está la lista:
http://en.wikipedia.org/wiki/Self-balancing_binary_search_tree
Hay seis populares definidos. Comience con esos.