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 Groupe : 30 Monitrice : Kerlyne Fostine Courriel :

Présentations similaires


Présentation au sujet: "Arbres Rouge noir Démo : INF3105 Structures de données et algorithmes Groupe : 30 Monitrice : Kerlyne Fostine Courriel :"— 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 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. Larbre a les propriétés suivantes: 1.Chaque noeud est soit rouge soit noir 2.La racine est noire 3.Si un noeud est rouge, tous ses enfants doivent être noirs 4.À partir de nimporte quel noeud, tous les chemins de la racine jusquà un pointeur NULL doivent avoir le même nombre de noeuds noirs

3 3 Arbres rouge noir - Exemple

4 4 Arbres rouge noir - exemple

5 5 Arbres rouge noir – exemple

6 6 Arbres rouge noir – Contre exemple noeuds noirs 4 noeuds noirs

7 7 Arbre rouge noir - Structure Chaque nœud dun 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 larbre (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 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 larbre, par le biais de changements de couleurs et de rotations

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

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

11 11 Exemple – Rotation simple Noeud inséré 10 (NOIR) Rotation simple

12 12 Exemple : Rotation simple (suite) (NOIR)

13 13 Exemple – Rotation simple (Suite) (NOIR)

14 14 Exemple – Rotation simple (suite) (NOIR)

15 15 Exemple - rotation simple (suite) (NOIR)

16 16 Exemple – Rotation simple (suite) (NOIR)

17 17 Exemple - Double rotation Noeud inséré 10 (NOIR)

18 18 Exemple - Double rotation (Suite) (NOIR)

19 19 Exemple – Double rotation (Suite) (NOIR)

20 20 Algorithme dinsertion 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 21 Algorithme dinsertion (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 Couleur Z.parent.parent = Rouge Rotation fauche Z.parent.parent else double rotation droite gauche Couleur Racine.gauche = Noir

22 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 Else X = Y.gauche X.parent = Y.parent If Racine = X.parent Racine.gauche = X Else If Y = Y.parent.gauche Y.parent.gauche = X Else Y.parent.droite = X

23 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) else couleur Y = Couleur Z Liberer Z Else If couleur Y = Noir AjusterSuppression(X) Liberer Y Retourner Valeur

24 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 W = Z.parent.gauche If couleur W.droite ET W.gauche = Noir Couleur W = Rouge Z = Z.parent Else if Couleur W.gauche = Noir Couleur W.droite = Noir Couleur W = Rouge Rotation gauche W W = Z.parent.gauche Couleur W = Couleur Z.parent Couleur Z.parent = Noir Couleur W.gauche = Noir Rotation droite Z.parent Z = racine Else Rotation double droite gauche Couleur z = noir

25 25 Références Structures de données avancées avec la STL Hiver2005/Note/Arbres


Télécharger ppt "Arbres Rouge noir Démo : INF3105 Structures de données et algorithmes Groupe : 30 Monitrice : Kerlyne Fostine Courriel :"

Présentations similaires


Annonces Google