Qual é o mais eficiente?
Vagas e difíceis de responder. As complexidades computacionais são todas bem definidas. Se é isso que você quer dizer com eficiência, não há debate real. De fato, todos os bons algoritmos vêm com provas e fatores de complexidade.
Se você quer dizer "tempo de execução" ou "uso de memória", precisará comparar as implementações reais. Então, idioma, tempo de execução, sistema operacional e outros fatores entram em jogo, dificultando a resposta da pergunta.
Qual é a mais fácil de implementar?
Vagas e difíceis de responder. Alguns algoritmos podem parecer complexos para você, mas triviais para mim.
Qual é o mais usado?
Vagas e difíceis de responder. Primeiro, há o "por quem?" parte disso? Apenas Haskell? E o C ou C ++? Segundo, há o problema de software proprietário em que não temos acesso à fonte para fazer uma pesquisa.
Mas crucialmente, o que você recomenda?
Suponho que isso pertence aqui porque está aberto ao debate.
Corrigir. Como seus outros critérios não são muito úteis, é isso que você obterá.
Você pode obter fonte para um grande número de algoritmos em árvore. Se você quiser aprender alguma coisa, pode simplesmente implementar todas as que encontrar. Em vez de pedir uma "recomendação", basta coletar todos os algoritmos que encontrar.
Aqui está a lista:
http://en.wikipedia.org/wiki/Self-balancing_binary_search_tree
Existem seis populares definidos. Comece com aqueles.