La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Arbres Rouge noir Démo : INF3105 Structures de données et algorithmes

Présentations similaires


Présentation au sujet: "Arbres Rouge noir Démo : INF3105 Structures de données et algorithmes"— Transcription de la présentation:

1 Arbres Rouge noir Démo : INF3105 Structures de données et algorithmes
Groupe : 30 Monitrice : Kerlyne Fostine Courriel :

2 Arbres rouge noir - Définition
Arbre binaire de recherche dans lequel chaque nœud a un attribut supplémentaire : sa couleur, qui est soit rouge soit noire. L’arbre a les propriétés suivantes: Chaque noeud est soit rouge soit noir La racine est noire Si un noeud est rouge, tous ses enfants doivent être noirs À partir de n’importe quel noeud, tous les chemins de la racine jusqu’à un pointeur NULL doivent avoir le même nombre de noeuds noirs

3 Arbres rouge noir - Exemple
30 70 15 10 20 60 85 5 50 65 80 90 40 55

4 Arbres rouge noir - exemple
30 70 15 10 20 60 85 5 50 65 90 80 40 55

5 Arbres rouge noir – exemple

6 Arbres rouge noir – Contre exemple
30 70 15 10 60 85 2 noeuds noirs 90 5 50 65 80 83 95 40 55 4 noeuds noirs

7 Arbre rouge noir - Structure
Chaque nœud d’un arbre rouge noir doit avoir : Un pointeur parent Un pointeur gauche Un pointeur droit Un champ couleur Un champ element Un champ clef Un nœud peut être : Une sentinelle nul qui sert à représenter les feuilles de l’arbre (Pas de valeur, pas d’élément, de couleur noire, clef de valeur minimum, champs parent, gauche, droite pointent a elle-même) Une sentinelle racine dont les champs parent et droite pointent a la sentinelle nul, sans element, de couleur noire et avec une clef de valeur maximum, et dont le champ de gauche indique le vrai nœud racine.

8 Arbre rouge noir – Insertion
Un noeud inséré est toujours une feuille On peut pas le colorier en noir, puisque cela violerait la condition 4 On colore le noeud en rouge Si le père est noir, pas de problème Si le père est rouge, on viole la condition 3. Dans ce cas, on ajuste l’arbre, par le biais de changements de couleurs et de rotations

9 Premier cas : Le frère du noeud parent est noir (on utilise la convention qu’un noeud NULL est noir)
Noeud inséré G P S X G P D E B S C A C X D E B A Rotation simple

10 Deuxième cas: le frère du noeud parent est noir (on utilise la convention qu’un noeud NULL est noir)
G X S P G P D E B S X A C D E B C Noeud inséré Rotation double

11 Exemple – Rotation simple
30 70 15 10 (NOIR) 20 60 85 5 3 65 80 90 50 (NOIR) 40 55 Rotation simple Noeud inséré

12 Exemple : Rotation simple (suite)
30 70 15 20 60 85 5 3 10 (NOIR) 90 50 65 80 (NOIR) 40 55

13 Exemple – Rotation simple (Suite)
30 70 15 20 60 85 5 3 10 (NOIR) 90 50 65 80 (NOIR) 40 55

14 Exemple – Rotation simple (suite)
30 70 15 20 60 85 5 3 10 (NOIR) 90 50 65 80 (NOIR) 40 55

15 Exemple - rotation simple (suite)
30 70 15 5 3 20 60 85 10 (NOIR) 90 50 65 80 (NOIR) 40 55

16 Exemple – Rotation simple (suite)
30 70 15 20 5 60 85 10 90 3 50 65 80 (NOIR) (NOIR) 40 55

17 Exemple - Double rotation
30 70 15 10 (NOIR) 20 60 85 65 90 5 50 80 (NOIR) 8 40 55 Noeud inséré

18 Exemple - Double rotation (Suite)
30 70 15 20 60 85 10 (NOIR) 90 5 50 65 80 (NOIR) 8 40 55

19 Exemple – Double rotation (Suite)
30 70 15 8 20 60 85 10 90 5 50 65 80 (NOIR) (NOIR) 40 55

20 Algorithme d’insertion
Insertion(z) Y = racine X = racine.gauche Tant que X != nul Y = X if X.clef > Z.clef X = X.gauche else X = X.droite Z.Parent = Y If Y = racine OU Y.clef > z.clef Y.gauche = Z Else Y.droite = Z Z.Gauche = nul Z.Droite = nul z.Couleur = Rouge ajusterInsertion(Z)

21 Algorithme d’insertion (suite)
ajusterInsertion(Z) Tant que couleur Z.parent = Rouge if Z.parent = Z.parent.parent.droite Y = Z.parent.parent.gauche if Couleur Y = Rouge Couleur Z.parent = noir Couleur Y = noir Couleur Z.parent.parent = Rouge Z = Z.parent.parent else if Z = X.parent.gauche Z = Z.parent Rotation droite z Couleur Z.parent = Noir Rotation fauche Z.parent.parent double rotation droite gauche Couleur Racine.gauche = Noir

22 Algorithme suppression
Suppression(Z) Valeur = Z.element If Z.gauche = nul OU Z.droite = nul Y = Z Else Y = Successeur Z If Y.gauche = nul X = Y.droite X = Y.gauche X.parent = Y.parent If Racine = X.parent Racine.gauche = X If Y = Y.parent.gauche Y.parent.gauche = X Y.parent.droite = X

23 Algorithme suppression (Suite)
If Y != Z Y.gauche = Z.gauche Y.droite = X.droite Y.parent = X.parent Z.gauche.parent = Z.droite.parent = Y if Z = Z.parent.gauche Z.parent.gauche = Y else Z.parent.droite = Y If couleur Y = Noir Couleur Y = Couleur Z AjusterSuppression(X) couleur Y = Couleur Z Liberer Z Else Liberer Y Retourner Valeur

24 Algorithme suppression (Suite)
AjusterSuppression(Z) Tant que couleur Z = Noir ET Z != racine if Z = Z.parent.droite W = Z.parent.gauche If Couleur W = Rouge Couleur W = Noir Couleur Z.parent = Rouge Rotation droite Z.parent If couleur W.droite ET W.gauche = Noir Couleur W = Rouge Z = Z.parent Else if Couleur W.gauche = Noir Couleur W.droite = Noir Rotation gauche W Couleur W = Couleur Z.parent Couleur Z.parent = Noir Couleur W.gauche = Noir Z = racine Rotation double droite gauche Couleur z = noir

25 Références Structures de données avancées avec la STL


Télécharger ppt "Arbres Rouge noir Démo : INF3105 Structures de données et algorithmes"

Présentations similaires


Annonces Google