Arbre rouge-noir (RBTree)

Arbre rouge-noir (RBTree)

Qu'est-ce qu'un arbre rouge-noir ?

Les arbres rouge-noir ont été inventés par Rudolf Bayer en 1972 et étaient alors appelés arbres B binaires symétriques.

Il a été modifié pour devenir « l'arbre rouge-noir » d'aujourd'hui par Leo J. Guibas et Robert Sedgewick en 1978.

L'arbre rouge-noir est également un arbre de recherche binaire auto-équilibré, similaire à l'arbre AVL.Maintenez l'équilibre de l'arborescence binaire grâce à des opérations de rotation lors de l'ajout et de la suppression pour des performances de requête plus efficaces.

Par rapport aux arbres AVL, les arbres rouge-noir sacrifient une partie de leur équilibre en échange de moins d'opérations de rotation lors des opérations d'insertion/suppression, et les performances globales sont meilleures que celles des arbres AVL.

Bien que RBTree soit complexe, son temps d’exécution dans le pire des cas est également très bon, et il est efficace en pratique :

ça peutRechercher, insérer et supprimer en un temps O (log n), où n est le nombre d'éléments dans l'arborescence.

Caractéristiques des arbres rouge-noir

L'arbre rouge-noir est l'arbre de recherche binaire équilibré le plus couramment utilisé dans les applications pratiques.Pas strictement équilibré, mais les performances d'utilisation moyennes sont très bonnes

Dans un arbre rouge-noir, les nœuds sont étiquetés en rouge et noir.

Les principes des arbres rouge-noir ont les points suivants :
Caractéristique 1 : Les nœuds sont soit noirs, soit rouges
Caractéristique 2 : Le nœud racine doit être noir
Caractéristique 3 : Les nœuds feuilles (NIL) doivent être noirs
Caractéristique 4 : Les deux nœuds enfants de chacun les nœuds rouges sont tous deux noirs. (Il ne peut pas y avoir deux nœuds rouges consécutifs sur tous les chemins depuis chaque feuille jusqu'à la racine)
Caractéristique 5 :Tous les chemins d'un nœud à chacune de ses feuilles contiennent le même nombre de nœuds noirs

L'attribut rouge indique que l'enfant d'un nœud rouge doit être noir. Cependant, les enfants des nœuds noirs RBTree peuvent être rouges ou noirs.

Description de l'attribut feuille, le nœud feuille peut être vide nul,Les nœuds feuilles d'AVL ne sont pas videsimage

Sur la base des principes ci-dessus, nousGénéralement, lors de l'insertion d'un nœud d'arbre rouge-noir, le nœud sera défini sur rouge.,

**Raison : **Se référer au dernier principe : le rouge est le moins susceptible de détruire le principe. S'il est noir, il est probable que les nœuds noirs de cette branche seront 1 de plus que les autres branches, détruisant l'équilibre.

Points mémoire :
Vous pouvez retenir plusieurs principes des arbres rouge-noir selon la classification entre parenthèses :
( Attribut Couleur ) Propriété 1 : Le nœud est soit noir, soit rouge
( Attribut Racine ) Propriété 2 : Le nœud racine doit être noir
( Attribut Feuille ) Propriété 3 : Le nœud feuille (NIL) doit être noir
( attribut rouge ) Propriété 4 : Les deux nœuds enfants de chaque nœud rouge sont tous deux noirs. (Il ne peut pas y avoir deux nœuds rouges consécutifs sur tous les chemins allant de chaque feuille à la racine)
( Attribut noir ) Propriété 5 : Tous les chemins allant de n'importe quel nœud à chacune de ses feuilles contiennent le même nombre de nœuds noirs.

Les attributs noirs peuvent être compris comme des caractéristiques équilibrées, si les caractéristiques d'équilibrage ne peuvent être respectées, une opération d'équilibrage doit être effectuée.

La RBT espace-temps
est en quelque sorte une sorte deOptimisation du type espace-temps, sur le nœud de avl, ajoutéDonnées d'attribut de couleur, ce qui équivaut à augmenter la consommation d’espace. En augmentant l'attribut de couleur, le nombre d'opérations d'équilibrage ultérieures est réduit.

noir parfaitement équilibré

L'arbre rouge-noir n'est pas un arbre de recherche binaire équilibré AVL.Comme le montre la figure, le sous-arbre gauche du nœud racine P est évidemment plus haut que le sous-arbre droit.

Selon la caractéristique 5 d'un arbre rouge-noir, tous les chemins depuis n'importe quel nœud vers chacune de ses feuilles contiennent le même nombre de nœuds noirs, ce qui signifie :
Le nombre de niveaux de nœuds noirs dans le sous-arbre gauche et le sous-arbre droit de rbt est égal.
Les conditions d'équilibre des arbres rouge-noir,Elle n'est pas contrainte par la hauteur totale, mais par la hauteur du nœud noir..
Par conséquent, cet équilibre d’arbres rouge-noir est appelénoir parfaitement équilibré
image

Pour voir l'effet d'un noir parfaitement équilibré,
supprimez les nœuds rouges dans rbt et vous obtiendrez unArbre quadruple, du nœud racine à chaque feuille, la hauteur est la même, qui est la longueur du chemin noir de la racine de rbt aux feuilles.
image

Trois opérations du processus d'équilibre de restauration des arbres rouge-noir

Une fois que les cinq principes des arbres rouge-noir ne sont pas satisfaits, nous considérons que l'équilibre est rompu. Comment rétablir l'équilibre ? S'appuyer sur ses trois opérations :Changement de couleur, rotation à gauche, rotation à droite

Décoloration

La couleur du nœud passe du rouge au noir ou du noir au rouge.

Gaucher

Avec un certain nœud comme pivot (pivot), son nœud parent (la racine du sous-arbre) est tourné dans son propre sous-arbre gauche (gaucher). Le sous-arbre gauche d'origine du pivot devient le sous-arbre droit du nœud racine d'origine. . Le sous-arbre gauche d'origine du pivot devient le sous-arbre droit du nœud racine d'origine. Le sous-arbre droit reste inchangé.image

Rotation à droite :

Avec un certain nœud comme point d'appui (pivot), son nœud parent (la racine du sous-arbre) pivote dans son propre sous-arbre droit (rotation à droite). Le sous-arbre droit d'origine du pivot devient le sous-arbre gauche du nœud racine d'origine. Le sous-arbre gauche d'origine du pivot reste inchangé.image

Les opérations de virage à gauche et de virage à droite des arbres rouge-noir sont similaires aux opérations de virage à gauche et de virage à droite des arbres AVL.

Insertion de nœuds d'arbre rouge-noir

image

image

Par défaut, les nœuds nouvellement insérés sont rouges:
Étant donné que le nœud parent a une probabilité plus élevée d'être noir, l'insertion d'un nouveau nœud en rouge peut éviter les conflits de couleurs.

scène 1:L'arbre rouge-noir est un arbre vide

Utilisez simplement le nœud inséré comme nœud racine.

De plus : Selon les propriétés de l'arbre rouge-noir, les deux nœuds racines sont noirs. toujours besoinDéfinissez le nœud inséré en noir

Scénario 2 :La clé du nœud inséré existe déjà

Mettez à jour la valeur du nœud actuel avec la valeur du nœud inséré.

Scénario 3 :Le nœud parent du nœud inséré est noir

Puisque le nœud inséré est rouge, lorsque le nœud parent du nœud inséré est noir, cela n'affectera pas l'équilibre de l'arbre rouge-noir.Insertion directe sans auto-équilibrage

Scénario 4 :Le nœud parent du nœud inséré est rouge

D'après la propriété 2 : le nœud racine est noir.
Si le nœud parent du nœud inséré est un nœud rouge, alorsLe nœud parent ne peut pas être le nœud racine, le nœud inséré a donc toujours un nœud grand-parent (relation sur trois générations).

D'après la propriété 4 : les deux nœuds enfants de chaque nœud rouge doivent être noirs. Il ne peut pas y avoir deux nœuds rouges connectés.

A ce moment, deux états apparaîtront :
le père et l'oncle sont rouges,
le père est rouge et l'oncle est noir.

Scène 4.1 : Père et oncle sont des nœuds rouges

Selon la propriété 4 : les nœuds rouges ne peuvent pas être connectés ==》Le nœud grand-parent doit être un nœud noir:
Le père est rouge, alors le nombre de niveaux d'arbre rouge-noir qui doivent être insérés dans le sous-arbre à ce moment est : noir, rouge et rouge.

parce queIl est impossible d'avoir deux nœuds rouges connectés en même temps et doit être changé.

Traitement de décoloration : == noir rouge rouge> rouge noir rouge

  1. Changez les nœuds F et V en noir
  2. Changer P en rouge
  3. Définir P comme nœud actuel pour le traitement ultérieur
    image

On peut voir que P est défini sur rouge.
Si le nœud parent de P est noir, alors aucun traitement n'est requis ;
mais si le nœud parent de P est rouge, cela viole la nature de l'arbre rouge-noir, donc P a besoin à définir comme nœud actuel. Poursuivez l'opération d'insertion et effectuez le traitement d'auto-équilibrage jusqu'à ce que l'équilibre global soit atteint.

Scène 4.2 : L'oncle est noir, le père est rouge et est inséré dans le nœud gauche du père

Oncle est noir, ou n'existe pas (NIL)C'est aussi un nœud noir, etLe nœud parent d'un nœud est le nœud enfant gauche du nœud grand-parent.
Remarque : D'un point de vue pur insertion, le nœud oncle est soit rouge, soit noir (nœud NIL), sinon la propriété de l'arbre rouge-noir 5 sera détruite. A ce moment, le chemin aura un nœud noir de plus que les autres chemins. .
image

Scénario 4.2.1 Déséquilibre de type LL

Le nœud nouvellement inséré est le nœud enfant gauche de son nœud parent (LL cas rouge).Après l'insertion, il y a un déséquilibre de type LL.

image

Traitement d'auto-équilibrage :

  1. Changer de couleur :
    réglez F sur noir et P sur rouge
  2. Tournez à droite le nœud F
    image
Scénario 4.2.2 Déséquilibre de type LR

Le nœud nouvellement inséré est le nœud enfant droit de son nœud parent (cas rouge LR). Après insertion, il y a un déséquilibre de type LR.

image
Traitement d'auto-équilibrage :

  1. Tourner à gauche F
  2. Définissez F comme nœud actuel et obtenez le boîtier rouge LL
  3. Processus selon la situation rouge LL (1. Décoloration 2. Nœud P droitier)
    image
Scénario 4.3 : L'oncle est un nœud noir, le père est rouge et le nœud père est le nœud enfant droit du nœud grand-père

image

Scénario 4.3.1 : Déséquilibre de type RR

Le nœud nouvellement inséré est le nœud enfant droit de son nœud parent (cas rouge RR)
image

Traitement d'auto-équilibrage :

  1. Changement de couleur :
    réglez F sur noir et P sur rouge
  2. Effectuer une rotation à gauche sur le nœud P
    image
Scénario 4.3.2 : Déséquilibre de type RL

Un nœud nouvellement inséré est le nœud enfant gauche de son nœud parent (cas rouge RL)
image

Traitement d'auto-équilibrage :

  1. Tourner à droite F
  2. Définissez F comme nœud actuel pour obtenir la situation rouge RR
  3. Processus selon la situation rouge RR (1. Décoloration 2. Nœud P gaucher)
    image

Suppression du nœud d'arbre rouge-noir

L'opération de suppression de l'arbre rouge-noir comprend également deux parties de travail :

  • Rechercher le nœud cible
  • Auto-équilibrage après suppression

Lorsque le nœud cible n'existe pas, cette opération est ignorée ; lorsque le nœud cible existe, un traitement d'auto-équilibrage doit être effectué après suppression. Après avoir supprimé un nœud, vous devez toujours trouver un nœud pour remplacer le nœud supprimé. Sinon, le sous-arbre sera déconnecté du nœud parent. À moins que le nœud supprimé n'ait aucun nœud enfant, il n'est pas nécessaire de le remplacer.

image

image
Avis:R est le nœud de remplacement qui est sur le point d'être remplacé à la position du nœud supprimé. Avant suppression, il participe au sous-équilibrage de l'arbre à sa position d'origine. Après équilibrage, il est remplacé à la position du nœud supprimé. avant que la suppression ne soit terminée.

Cas 1 : le nœud de remplacement est un nœud rouge

Lorsque le nœud de remplacement est déplacé vers la position du nœud supprimé, puisque le nœud de remplacement est rouge, la suppression n'affectera pas l'équilibre de l'arborescence rouge-noir. Il vous suffit de définir la couleur du nœud de remplacement sur la couleur du nœud supprimé à redémarrer.balance.

Traitement :La couleur passe à la couleur du nœud supprimé

Cas 2 : Le nœud de remplacement est un nœud noir

Lorsque le nœud de remplacement est noir, un traitement d'auto-équilibrage doit être effectué.Déterminez si le nœud de remplacement est le nœud enfant gauche ou le nœud enfant droit de son nœud parent pour effectuer différentes opérations de rotation afin de rééquilibrer l'arborescence.

Cas 2.1 : Le nœud de remplacement est le nœud enfant gauche de son nœud parent
Cas 2.1.1 : Le nœud frère du nœud de remplacement est le nœud rouge

Si le nœud frère est un nœud rouge, selon la propriété 4, le nœud parent et le nœud enfant du nœud frère doivent être noirs. Alors
traitez-vous de :

  • Réglez S sur noir
  • Réglez P sur rouge
  • Effectuez une rotation à gauche sur P pour obtenir le scénario 2.1.2.3
  • Traitement du dossier 2.1.2.3

image

Cas 2.1.2 : Le nœud frère du nœud de remplacement est noir

Si le nœud frère est noir, la couleur du nœud parent et du nœud enfant ne peut pas être déterminée.

Cas 2.1.2.1 : le nœud enfant droit du nœud frère du nœud de remplacement est rouge et le nœud enfant gauche est de n'importe quelle couleur

Le nœud de remplacement est noir. Après suppression, le sous-arbre de gauche a un nœud noir de moins. Ensuite, un nœud noir doit être emprunté au sous-arbre de droite et doit être tourné vers la gauche.
Traitement :

  • Définissez la couleur de S sur la couleur de P
  • Réglez P sur noir
  • Réglez SR sur noir
  • La rotation à gauche de P
    image
    et la suppression de R n'ont aucun effet.
Cas 2.1.2.2 : Le nœud enfant droit du nœud frère du nœud de remplacement est noir et le nœud enfant gauche est rouge.

Si R est supprimé, un nœud rouge doit être emprunté au nœud de droite pour ne pas affecter le solde, pensez donc à convertir le cas 2.1.2.2 en cas 2.1.2.1.
Traitement :

  • Réglez S sur rouge
  • Réglez SL sur noir
  • Tourner à droite S nous donne le scénario 2.1.2.1
  • Effectuer le traitement du scénario 2.1.2.1
    image
Cas 2.1.2.3 : Les nœuds enfants des nœuds frères du nœud de remplacement sont tous noirs.

Dans ce cas, aucun nœud rouge de frère ne vous est prêté, vous devez donc trouver un autre endroit pour obtenir le nœud rouge. Ensuite, en raison de la nature des arbres rouge-noir poussant de bas en haut, nous avons pensé que nous pouvions utiliser P comme un nouveau nœud, tout comme l'ajout de nœuds. Remplacez le nœud, mais R est en fait supprimé. Traitez simplement P comme un nœud de remplacement et répétez la situation ci-dessus de bas en haut.

  • Réglez S sur rouge
  • Utiliser P comme nouveau nœud de remplacement
  • Réexécutez le
    traitement du scénario de suppression du nœud :
    image
Cas 2.2 : Le nœud de remplacement est le bon enfant de son nœud parent

Semblable au cas 2.1, ceci est géré en utilisant le nœud successeur comme nœud de remplacement.

Cas 2.2.1 : Le nœud frère du nœud de remplacement est rouge

Traitement :

  • Réglez S sur noir
  • Réglez P sur rouge
  • Effectuez une rotation à droite sur P pour obtenir le scénario 2.2.2.3
  • Effectuer le traitement du scénario 2.2.2.3
    image
Cas 2.2.2 : Le nœud frère du nœud de remplacement est noir
Cas 2.2.2.1 : Le nœud enfant gauche du nœud frère du nœud de remplacement est un nœud rouge et le nœud enfant droit est de n'importe quelle couleur.

Traitement :

  • Définissez la couleur de S sur la couleur de P
  • Réglez P sur noir
  • Réglez SL sur noir
  • Tourner à droite P
    image
Cas 2.2.2.2 : Le nœud enfant gauche du nœud frère du nœud de remplacement est noir et le nœud enfant droit est rouge

Traitement :

  • Réglez S sur rouge
  • Réglez SR sur noir
  • Effectuez une rotation à gauche sur S pour obtenir le scénario 2.2.2.1
  • Effectuer le traitement du scénario 2.2.2.1
    image
Cas 2.2.2.3 : Les nœuds enfants des nœuds frères du nœud de remplacement sont tous noirs.

Traitement :

  • Réglez S sur rouge
  • Utiliser P comme nouveau nœud de remplacement
  • Retraiter le scénario de suppression du nœud
    image
Résumé des règles
  • Condition de boucle : x != root && x.color = BLACK, x n'est pas le nœud racine et la couleur est noire
  • Opération de finition : régler x sur noir
  • x est le fils gauche ou le fils droit du père, et les opérations de traitement sont symétriques ; de même, vous n'avez qu'à vous souvenir des opérations du fils gauche et vous pouvez tirer des déductions

x est le fils gauche du père

  • Le frère est rouge : changez le frère en noir et le nœud parent en rouge ; faites pivoter le nœud parent vers la gauche pour restaurer la hauteur noire du sous-arbre gauche, et le neveu gauche devient le nouveau frère
  • Le frère est noir, et les neveux gauche et droit sont noirs : le frère devient rouge, x pointe vers le nœud parent, et l'ajustement continue
  • Le frère est noir, le neveu droit est noir (le neveu gauche est rouge) : le neveu gauche devient noir, le frère devient rouge ; le frère tourne à droite, rétablissant la hauteur noire du sous-arbre droit, et le neveu gauche devient le nouveau frère
  • Le frère est noir et le neveu droit est rouge : le frère devient la couleur du nœud parent, le nœud parent et le neveu droit deviennent noirs ; le nœud parent tourne vers la gauche, x pointe vers le nœud racine de l'arbre entier, terminant le boucle

Questions d'entretien RBT :

Question : Avec un arbre de recherche binaire, pourquoi devons-nous équilibrer l'arbre binaire ?

L'arbre de recherche binaire dégénère facilement en chaîne.
A ce moment, la complexité temporelle de la recherche dégénérera également de O (log n) à O (N). Un
arbre binaire équilibré AVL avec des restrictions sur la différence de hauteur entre la gauche et les bons sous-arbres sont introduits pour assurer une opération de recherche optimale. La mauvaise complexité temporelle est également O (log n)

Question : Avec des arbres binaires équilibrés, pourquoi avons-nous besoin d’arbres rouge-noir ?

La différence de hauteur entre les sous-arbres gauche et droit d'AVL ne peut pas dépasser 1. Chaque fois qu'une opération d'insertion/suppression est effectuée, une opération de rotation est presque nécessaire pour maintenir l'équilibre. Dans les scénarios où l'insertion/suppression est fréquente, les opérations de rotation fréquentes réduisent considérablement
la performances de l'AVL.
Les arbres rouges et noirs sacrifient un équilibre strict en échange d'une petite quantité de rotation lors de l'insertion/suppression.

Les performances globales sont meilleures que celles d'AVL

  • Le déséquilibre lors de l'insertion de l'arbre rouge-noir peut être résolu par un maximum de deux rotations ; le déséquilibre lors de la suppression peut être résolu par un maximum de trois rotations.

  • Les règles rouge-noir de l'arbre rouge-noir garantissent que l' opération de recherche peut être terminée en un temps O (log n) dans le pire des cas.
Question : Vous souvenez-vous encore des principes des arbres rouge-noir ?

Vous pouvez suivre le classement entre parenthèses et retenir plusieurs principes des arbres rouge-noir :

  • (Attribut de couleur) Le nœud est noir ou rouge
  • (Attribut racine) Le nœud racine doit être noir
  • (Attribut feuille) Les nœuds feuilles (NIL) doivent être noirs
  • (Attribut rouge) Les deux nœuds enfants de chaque nœud rouge sont tous deux noirs. (Il ne peut pas y avoir deux nœuds rouges consécutifs sur tous les chemins depuis chaque feuille jusqu'à la racine)
  • (Attribut noir) Tous les chemins d'un nœud à chacune de ses feuilles contiennent le même nombre de nœuds noirs.
Q : Quelles sont les opérations internes de l’arbre rouge-noir ?

Décoloration
Transformer un nœud rouge en noir, ou transformer un nœud noir en rouge, est la décoloration de ce nœud.
tourner
Semblable à l’opération de rotation des arbres binaires équilibrés.

La différence entre les arbres rouge-noir et les arbres AVL
  1. Les mécanismes d'ajustement de l'équilibre sont différents.
    L'arbre rouge-noir détermine s'il est déséquilibré en fonction du nombre constant de nœuds noirs sur le chemin. S'il est déséquilibré, il est restauré par changement de couleur et rotation.

AVL détermine s'il est déséquilibré en fonction du facteur d'équilibre de l'arbre (la valeur absolue de la différence de hauteur entre les sous-arbres gauche et droit de tous les nœuds ne dépasse pas 1). S'il est déséquilibré, il est restauré par rotation.

  1. L'efficacité d'insertion des arbres rouge-noir est plus élevée

Les arbres rouge-noir utilisent un équilibre non strict pour réduire le nombre de rotations lors de l'ajout et de la suppression de nœuds. Tout déséquilibre sera résolu en trois rotations.

L'arbre rouge-noir ne recherche pas « l'équilibre complet », il ne nécessite que des exigences d'équilibre partiel, réduisant ainsi les exigences de rotation, améliorant ainsi les performances.

AVL est un arbre strictement équilibré (un arbre de recherche binaire hautement équilibré), donc lors de l'ajout ou de la suppression de nœuds, selon la situation, le nombre de rotations est supérieur à celui de l'arbre rouge-noir.

Par conséquent, l’efficacité d’insertion de l’arbre rouge-noir est plus élevée

3. Les performances statistiques des arbres rouge-noir sont supérieures à celles des arbres AVL.
Les arbres rouge-noir peuvent effectuer des opérations de requête, d'insertion et de suppression avec une complexité temporelle O(log n).
Les recherches, insertions et suppressions dans l'arborescence AVL sont O (log n) dans les cas moyens et les pires.

La complexité temporelle de l'algorithme de l'arbre rouge-noir est la même que celle de l'AVL, mais les performances statistiques sont supérieures à celles de l'arbre AVL.

4. Applicabilité : l'efficacité de la recherche AVL est élevée.
Si dans votre application, le nombre de requêtes est bien supérieur aux insertions et aux suppressions, choisissez l'arborescence AVL. Si le nombre de requêtes et d'insertions et de suppressions est presque le même, vous devez choisir l'arbre rouge-noir.

Autrement dit, il s'agit parfois uniquement d'un tri (créer-traverser-supprimer) sans recherche ou le nombre de recherches est très faible, et l'arborescence RB est plus rentable.

Arbre rouge-noir VS arbre AVL

Les arbres équilibrés courants incluent les arbres rouge-noir et les arbres équilibrés AVL.Pourquoi STL et Linux utilisent-ils tous deux des arbres rouge-noir pour implémenter des arbres équilibrés ? Il y a probablement plusieurs raisons :

  1. En termes de détails d'implémentation, si l'insertion d'un nœud entraîne un déséquilibre de l'arbre, l'arbre AVL et l'arbre rouge-noir nécessitent au plus 2 opérations de rotation, c'est-à-dire que les deux sont O(1) ; cependant, la suppression d'un nœud entraîne L'arbre devient déséquilibré. Lors de l'équilibrage, dans le pire des cas, AVL doit maintenir l'équilibre de tous les nœuds sur le chemin allant du nœud supprimé à la racine, donc l'ampleur de la rotation requise est O (logN), tandis que RB-Tree ne nécessite que 3 rotations au maximum, nécessite uniquement une complexité O(1)

  2. Du point de vue des exigences d'équilibre des deux arbres équilibrés, la structure d'AVL est plus équilibrée que celle de RB-Tree. L'insertion et la suppression de nœuds sont plus susceptibles de provoquer un déséquilibre de l'arbre. Par conséquent, lorsqu'une grande quantité de données a besoin pour être inséré ou supprimé, AVL doit La fréquence de rééquilibrage sera plus élevée. Par conséquent, RB-Tree est plus efficace dans les scénarios qui nécessitent l’insertion et la suppression d’un grand nombre de nœuds. Naturellement, étant donné qu'AVL est très équilibré, l'efficacité de la recherche d'AVL est plus élevée.

  3. D'une manière générale, les performances statistiques de RB-tree sont supérieures à celles d'AVL.

Je suppose que tu aimes

Origine blog.csdn.net/u010523811/article/details/132768469
conseillé
Classement