Structures de données avancées : Arbres AVL & Arbres Rouge et Noir Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http://zegour.esi.dz email: d_zegour@esi.dz
Les arbres AVL Arbres AVL Un arbre AVL est un arbre de recherche binaire équilibré 80 70 +1 32 73 45 86 10 82 94 -1 90 | Profondeur(fg(n) )– Profondeur(fd(n)) | <= 1 Ajouter un champ balance (facteur d'équilibrage ) au niveau de chaque noeud
Les arbres AVL Arbres AVL (Cas de déséquilibre) 80 +2 +1 -1 70 86 +1 80 +2 +1 -1 70 86 +1 +1 32 73 82 94 +1 10 45 90 5
Les arbres AVL Arbres AVL (Cas de déséquilibre) 80 +2 +1 70 -1 86 -1 80 +2 +1 70 -1 86 -1 +1 32 73 82 94 -1 10 45 90 55
Les arbres AVL Arbres AVL (Techniques d'équilibrage ) Examinons un sous arbre de racine le plus jeune antécédent qui devient non équilibré suite à une insertion A B T3 T1 T2 +1 h=n Cas où le facteur d'équilibrage est +1 Le nouveau nœud est inséré dans le sous arbre gauche de B. Donc f(B) devient 1 et f(A) devient 2
Les arbres AVL Arbres AVL (Techniques d'équilibrage ) Examinons un sous arbre de racine le plus jeune antécédent qui devient non équilibré suite à une insertion A B T4 T1 +1 C T2 T3 h=n h=n-1 Cas où le facteur d'équilibrage est +1 Le nouveau nœud est inséré dans le sous arbre droit de B. f(B) devient -1 et f(A) devient 2.
Les arbres AVL Arbres AVL (Techniques d'équilibrage ) Transformer l'arbre de telle sorte que l'inordre soit préservé l'arbre transformé soit équilibré
Les arbres AVL Arbres AVL (Techniques d'équilibrage ) (a) rotation droite du nœud A A B T3 T1 T2 h=n A B T3 T1 T2 +2 +1 h=n
Les arbres AVL Arbres AVL (Techniques d'équilibrage ) (b) rotation gauche du nœud B suivie par une rotation droite du nœud A h=n-1 A B T4 T1 C T2 -1 h=n T3 A B T4 T1 +2 -1 C T2 T3 h=n h=n-1
Les arbres AVL Arbres AVL (Algorithme d'insertion) La première partie de l'algorithme consiste à insérer la clé dans l'arbre sans tenir compte du facteur d'équilibrage Elle garde aussi la trace du plus jeune antécédent, soit Y qui devient non équilibré La deuxième partie fait la transformation à partir de Y
Les arbres AVL Arbres AVL (Rotation gauche) Rotation gauche(N) P P Rotation gauche(N) N D G D N DD DG DD G DG AFF_FD(N, DG) AFF_FG(D, N)) AFF_FG(Parent, D)
Les arbres AVL Arbres AVL (Rotation droite) Rotation droite (N) P P Rotation droite (N) N G G D GG N GG GD GD D AFF_FG(N, GD) AFF_FD(G, N)) AFF_FD(Parent, G)
Les arbres AVL Arbres AVL (Exemples) Insérons la séquence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL. Insertion A, B, X A B X A B X
Les arbres AVL Arbres AVL (Exemples) Insérons la séquence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL. Insertion L, M A B X L M A B M L X
Les arbres AVL Arbres AVL (Exemples) Insérons la séquence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL. Insertion C A B M L X B L M C X A
Les arbres AVL Arbres AVL (Exemples) Insérons la séquence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL. Insertion D, E B L M C X A D E B L M D X A E C
Les arbres AVL Arbres AVL (Exemples) Insérons la séquence : A, B, X, L, M, C, D, E, H, R, F dans un arbre AVL. Insertion H, R, F D L R X B H E C A M
Les arbres AVL Arbres AVL (Suppression) Étape 1 : comme dans un arbre de recherche binaire ordinaire Étape 2 : mettre à jour les balances Cas où la balance d’un nœud A devient +2 Le fils gauche B de A doit exister Les cas suivants peuvent se présenter B a une balance égale à + 1 B a une balance égale à – 1 B a une balance égale à 0 Même traitement symétrique dans le cas où la balance d’un nœud A devient -2 Traitement peut continuer en cascade
Les arbres AVL Arbres AVL (Suppression) B a une balance égale à + 1 A A B n-1 n +2 +1
Les arbres AVL Arbres AVL (Suppression) B a une balance égale à -1 Cas Balance (C)= 0 A B n-1 n +2 -1 A B n-1 +2 -1 C B a donc un fils à sa droite, soit C.
Les arbres AVL Arbres AVL (Suppression) B a une balance égale à -1 , C son fils droit avec Balance(C)=0 A C n-1 B A B n-1 +2 -1 C
Les arbres AVL Arbres AVL (Suppression) B a une balance égale à -1 Balance (C)= +1 A B n-1 n +2 -1 A B n-1 +2 -1 C n-2 +1 B a donc un fils à sa droite, soit C.
Les arbres AVL Arbres AVL (Suppression) B a une balance égale à -1 , C son fils droit avec Balance(C)=+1 A C n-1 n-2 -1 B A B n-1 +2 -1 C n-2 +1
Les arbres AVL Arbres AVL (Suppression) B a une balance égale à -1 Balance (C)= -1 A B n-1 n +2 -1 A B n-1 +2 -1 C n-2 B a donc un fils à sa droite, soit C.
Les arbres AVL Arbres AVL (Suppression) B a une balance égale à -1 , C son fils droit avec Balance(C)=-1 A B n-1 +2 -1 C n-2 A C n-1 B n-2 +1
Les arbres AVL Arbres AVL (Suppression) B a une balance égale à 0 A B -1 +1 A B n-1 n +2
Les arbres AVL Arbres AVL (Analyse théorique) la profondeur maximale d'un arbre binaire équilibré est 1.44*Log2n La recherche dans un tel arbre n'exige jamais plus de 44% de plus de comparaisons que pour un arbre binaire complet Operations de maintenance : - Restructuration = 1 rotation ou double rotation Insertion : au plus 1 restructuration suppression : au plus Log2 (N) restructurations
Les arbres Rouge et Noir 37 50 30 35 39 70 10 20 33 34 36 38 40 60 80 100 90 32 Arbre rouge et noir
Les arbres Rouge et Noir Arbres Red Black Un arbre rouge et noir (RB-tree) est un arbre binaire de recherche où chaque nœud est de couleur rouge ou noire . De plus, toutes les branches issues de tout nœud : Ne possèdent pas deux nœuds rouges consécutifs. Possèdent le même nombre de nœuds noirs La racine est noir - Nœuds noirs : équilibrage parfait - Nœuds rouges : tolérer légèrement le déséquilibre Pire des cas: Alternance entre les nœuds rouges et noirs.
Les arbres Rouge et Noir Arbres Red Black (Insertion) Insertion comme dans un arbre de recherche binaire. Le nœud inséré est toujours une feuille On lui attribue la couleur rouge Si son père est aussi rouge, un algorithme de maintenance est appliqué
Les arbres Rouge et Noir Arbres Red Black(Insertion) CAS 1: le frère F de P est rouge PP F P X PP F P X X : nœud introduit Les nœuds P et F deviennent noirs et leur père PP devient rouge. Le processus continue en cascade
Les arbres Rouge et Noir Arbres Red Black(Insertion) CAS 2: le frère F de P est noir et X est le fils gauche de P. PP F P X DP P PP X F DP Rotation droite du nœud PP. P devient noir et PP rouge. Le processus se termine
Les arbres Rouge et Noir Arbres Red Black(Insertion) CAS 3: le frère F de P est noir et X est le fils droit de P. PP F P X B A X PP P F B A Rotation gauche du nœud P + rotation droite du nœud PP. X devient noir et PP rouge. Le processus se termine
Les arbres Rouge et Noir Arbres Red Black(Insertion) CAS 4: le nœud père P est la racine de l'arbre P X P X Le nœud père devient noir C'est le seul cas où la hauteur noire de l'arbre augmente. Le processus se termine
Les arbres Rouge et Noir Arbres Red Black (Exemple) Insérer 13 13 Insérer 10 13 10 Insérer 5 Couleur du frère de P= noir Et X = fg(P) 13 10 P 10 5 13 Rotation 5 X
Les arbres Rouge et Noir Arbres Red Black(exemple) Insérer 2 PP PP PP 10 Couleur du frère de P= rouge 10 Coloration 10 P P 5 13 5 13 P 5 13 Coloration 2 X 2 X 2 X
Les arbres Rouge et Noir Arbres Red Black (exemple) Insérer 4 10 10 Couleur du frère de P= noir ET X = fd(P) ET P=FG(PP) PP 4 13 5 13 2 5 P 2 Double rotation X 4
Les arbres Rouge et Noir Arbres Red Black (Suppression) Suppression comme dans un arbre de recherche binaire. Si le nœud physiquement supprimé est noir, un algorithme de maintenance est appliqué. On considère que le nœud qui remplace le nœud supprimé porte une couleur noire en plus. Ceci signifie qu'il devient noir s'il est rouge et qu'il devient doublement noir s'il est déjà noir. L’algorithme de maintenance a donc pour rôle de supprimer ce nœud doublement noir.
Les arbres Rouge et Noir CAS 1: Le frere F de X est noir et a deux fils noirs Arbres Red Black (Suppression) Soit X le noeud doublement noir (Supposé ici comme un fils gauche) et P son père P F X F X P Transformer F en un noeud rouge P F X P F X Si le parent P est noir, le processus continue en remontant dans l’arbre. X devient le nouveau noeud doublement noir.
Les arbres Rouge et Noir CAS 2: Le frère F du noeud X est noir et a un fils droit rouge (FD) Arbres Red Black (Suppression) P F A X FD B C F FD P X A B C Rotation gauche de P Recolorer : P et FD deviennent noirs et la couleur de F est celle de P avant la transformation. Le processus se termine
Les arbres Rouge et Noir CAS 3: si le frere F du noeud X est noir et a un fils gauche rouge(FG) Arbres Red Black (Suppression) P F FG X A B FG F P B X A Rotation droite (F) + rotation gauche (P). Recolorer : P devient noir et la couleur de FG est celle de P avant la transformation. Le processus se termine
Les arbres Rouge et Noir Arbres Red Black (Suppression) CAS 4: Le frère F de X est rouge P S X B A S B P A X Rotation droite(P) Le processus continue selon le cas 1, 2 ou 3
Les arbres Rouge et Noir Arbres Red Black (Suppression) CAS 0: X est la racine de l’arbre Soit X le noeud doublement noir P X X X devient simplement un noeud noir. C’est le seul cas ou la hauteur de l’arbre diminue. Le processus se termine.
Les arbres Rouge et Noir Arbres Red-Black (Analyse théorique) Operations de maintenance : - Restructuration et coloration. Insertion : au plus 1 restructuration et au plus Log2 (n) colorations. suppression : au plus 2 restructurations et au plus Log2 (n) colorations. N : nombre d’élements insérés. la profondeur maximale d'un arbre binaire équilibré est 2*Log2(n) Recherche, insertion et suppression : O(Log2(n))