Structures de donnes avances Arbres AVL Pr ZEGOUR
Structures de données avancées : Arbres AVL 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é 0 +1 80 -1 70 0 0 32 0 10 0 45 86 0 73 +1 82 0 90 | Profondeur(fg(n) )– Profondeur(fd(n)) | <= 1 Ajouter un champ balance (facteur d'équilibrage ) au niveau de chaque noeud 94
Les arbres AVL Arbres AVL (Cas de déséquilibre) 0 +2 +1 80 -1 70 0 +1 +1 0 5 0 10 0 32 0 45 86 0 73 +1 82 0 90 94
Les arbres AVL Arbres AVL (Cas de déséquilibre) 0 +2 -1 0 10 +1 80 -1 70 0 32 0 73 -1 45 0 86 +1 82 0 55 90 94
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 +1 A 0 B T 3 T 1 T 2 h=n h=n B 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 Cas où le facteur d'équilibrage est +1 +1 A 0 B T 4 C T 1 h=n 0 h=n T 2 T 3 h=n-1 B 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 +2 B A +1 B T 1 h=n B 0 T 2 h=n T 3 T 1 h=n B 0 A T 2 T 3 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 0 +2 -1 B T 4 C T 1 h=n C A T 2 h=n-1 B 0 h=n T 3 h=n-1 0 -1 B T 1 T 2 h=n-1 B A T 3 T 4 h=n-1 h=n
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) P P Rotation gauche(N) N D G D D G AFF_FD(N, DG) D D N D D G AFF_FG(D, N)) D G AFF_FG(Parent, D)
Les arbres AVL Arbres AVL (Rotation droite) P P Rotation droite (N) N G GG G D AFF_FG(N, GD) GG N G D AFF_FD(G, N)) AFF_FD(Parent, G) D
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 B A A B X 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 B B A X L A M L M 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 L B A B M L X X A M C 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 D, E L L B A B M C X D M A C E X D E
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 L D R B A M D C E H X
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 a) B a une balance égale à + 1 b) B a une balance égale à – 1 c) B a une balance égale à 0 Même traitement symétrique dans le cas où la balance d’un nœud A devient Traitement peut continuer en cascade
Les arbres AVL Arbres AVL (Suppression) B a une balance égale à + 1 +2 B A 0 +1 0 B n n-1 n A n-1
Les arbres AVL Arbres AVL (Suppression) B a une balance égale à -1 Cas Balance (C)= 0 +2 +2 A -1 -1 B n-1 A n-1 n B n-1 C n-1 B a donc un fils à sa droite, soit C. 0 n-1
Les arbres AVL Arbres AVL (Suppression) B a une balance égale à -1 , C son fils droit avec Balance(C)=0 +2 C A -1 B n-1 C n-1 0 B n-1 0 0 0 A n-1 n-1
Les arbres AVL Arbres AVL (Suppression) B a une balance égale à -1 Balance (C)= +1 +2 +2 A -1 -1 B n-1 A B n-1 n n-1 C n-1 B a donc un fils à sa droite, soit C. +1 n-2
Les arbres AVL Arbres AVL (Suppression) B a une balance égale à -1 , C son fils droit avec Balance(C)=+1 +2 C A -1 B n-1 C n-1 +1 B n-1 n-2 0 -1 0 A n-1 n-2 n-1
Les arbres AVL Arbres AVL (Suppression) B a une balance égale à -1 Balance (C)= -1 +2 +2 A -1 -1 B n-1 A n-1 n B n-1 C n-1 n-2 B a donc un fils à sa droite, soit C. -1 n-1
Les arbres AVL Arbres AVL (Suppression) B a une balance égale à -1 , C son fils droit avec Balance(C)=-1 +2 A C -1 B n-1 C n-1 n-2 B 0 0 +1 A -1 n-1 n-2 n-1
Les arbres AVL Arbres AVL (Suppression) B a une balance égale à 0 +2 -1 B A 0 +1 B n n-1 n n A n n-1
Les arbres AVL Arbres AVL (Analyse théorique) la profondeur maximale d'un arbre binaire équilibré est 1. 44*Log 2 n 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 Log 2 (N) restructurations
- Slides: 27