Quel est le plus efficace?
Vague et difficile à répondre. Les complexités informatiques sont toutes bien définies. Si c'est ce que vous entendez par efficacité, il n'y a pas vraiment de débat. En effet, tous les bons algorithmes sont livrés avec des preuves et des facteurs de complexité.
Si vous voulez dire «exécution» ou «utilisation de la mémoire», vous devrez comparer les implémentations réelles. Ensuite, la langue, l'exécution, le système d'exploitation et d'autres facteurs entrent en jeu, ce qui rend la question difficile à répondre.
Quelle est la plus simple à mettre en œuvre?
Vague et difficile à répondre. Certains algorithmes peuvent vous sembler complexes, mais triviaux pour moi.
Lequel est le plus utilisé?
Vague et difficile à répondre. Il y a d'abord le "par qui?" en partie? Haskell seulement? Et C ou C ++? Deuxièmement, il y a le problème du logiciel propriétaire où nous n'avons pas accès à la source pour faire une enquête.
Mais surtout, lequel recommandez-vous?
Je suppose que cela appartient ici car il est ouvert au débat.
Correct. Puisque vos autres critères ne sont pas très utiles, c'est tout ce que vous obtiendrez.
Vous pouvez obtenir la source d'un grand nombre d'algorithmes d'arborescence. Si vous voulez apprendre quelque chose, vous pouvez simplement implémenter tout ce que vous pouvez trouver. Plutôt que de demander une "recommandation", il vous suffit de collecter tous les algorithmes que vous pouvez trouver.
Voici la liste:
http://en.wikipedia.org/wiki/Self-balancing_binary_search_tree
Il en existe six populaires. Commencez par ceux-là.