Aucune des réponses ne mentionne à quoi servent exactement les BST.
Si ce que vous voulez faire est simplement de consulter les valeurs, une table de hachage est beaucoup plus rapide, O(1) insertion et consultation (amorti dans le meilleur des cas).
Une BST sera O(log N) lookup où N est la hauteur de l'arbre, les insertions sont également O(log N).
Les arbres RB et AVL sont importants, comme l'a mentionné une autre réponse, en raison de cette propriété. Si une BST simple est créée avec des valeurs en ordre, l'arbre sera aussi grand que le nombre de valeurs insérées, ce qui est mauvais pour les performances de recherche.
La différence entre les arbres RB et AVL réside dans les rotations nécessaires pour rééquilibrer après une insertion ou une suppression, les arbres AVL sont O(log N) pour les rééquilibrages alors que les arbres RB sont O(1). Un exemple de l'avantage de cette complexité constante est dans le cas où vous gardez une source de données persistante, si vous avez besoin de suivre les changements pour le roll-back, vous devriez suivre O(log N) changements possibles avec un arbre AVL.
Pourquoi seriez-vous prêt à payer pour le coût d'un arbre par rapport à une table de hachage ? L'ORDRE ! Les tables de hachage n'ont pas d'ordre, alors que les BST, en revanche, sont toujours naturellement ordonnées en vertu de leur structure. Donc si vous vous retrouvez à jeter un tas de données dans un tableau ou un autre conteneur et à les trier plus tard, une BST peut être une meilleure solution.
La propriété order de l'arbre vous offre un certain nombre de possibilités d'itération ordonnée : in-order, depth-first, breadth-first, pre-order, post-order. Ces algorithmes d'itération sont utiles dans différentes circonstances si vous souhaitez les consulter.
Les arbres rouges noirs sont utilisés en interne dans presque tous les conteneurs ordonnés des bibliothèques de langage, C++ Set et Map, .NET SortedDictionary, Java TreeSet, etc...
Les arbres sont donc très utiles, et vous pouvez les utiliser assez souvent sans même le savoir. Vous n'aurez probablement jamais besoin de pour en écrire un vous-même, bien que je le recommande vivement comme un exercice de programmation intéressant.