Essayez de lire ceci article
Il offre un bon aperçu des différences, des similitudes, des performances, etc.
Voici une citation de l'article :
Les arbres RB sont, tout comme les arbres AVL, auto-équilibrés. Ils offrent tous deux des performances de consultation et d'insertion de O(log n).
La différence est que les arborescences RB garantissent O(1) rotations par opération d'insertion. C'est ce qui coûte réellement les performances dans les implémentations réelles.
Simplifiés, les arbres RB ont l'avantage d'être conceptuellement 2 ou 3 arbres sans avoir à supporter la surcharge des structures de nœuds dynamiques. Physiquement, les arborescences RB sont implémentées comme des arbres binaires, les drapeaux rouge/noir simulent le comportement 2-3.
D'après ce que je comprends, les arbres AVL et les arbres RB ne sont pas très éloignés en termes de performances. Un arbre RB est simplement une variante d'un arbre B et l'équilibrage est mis en œuvre différemment d'un arbre AVL.
2 votes
Duplication possible de Pourquoi std::map est-il implémenté comme un arbre rouge-noir ?
2 votes
Pour l'anecdote, les développeurs de Rust ont choisi d'utiliser un fichier Arbre B au lieu de l'un ou l'autre pour leur carte ordonnée standard.