Cours 2 : TDA Arbre Binaire B. Jacob IC2/LIUM 27 février 2010
Plan 1 Introuction 2 Primitives u TDA Arbin 3 Réalisations u TDA Arbin par cellules chaînées par cellules contiguës par curseurs (faux pointeurs) Réalisation es Arbres parfaits 4 Recherche un élément 5 Ajonction un élément Ajonction aux feuilles Ajonction à la racine 6 Suppression un élément 7 Conclusion sur les arbres
Introuction Plan 1 Introuction
Introuction Méthoes arborescentes Cours précéent : si ensemble éléments sont ans un TDA Liste triée recherche un élément en log(n) comparaisons Problème : représentation contiguë (liste) mal aaptée lorsque l ensemble évolue ynamiquement ajonction et suppression peuvent être en O(n) Solution : pour que les 3 opérations recherche ajonction suppression soient efficaces structures arborescentes
Introuction Méthoes arborescentes Elles reposent sur 1 une comparaison avec la valeur un noeu 2 "l aiguillage" e la poursuite e la recherche ans un sous-arbre en fonction u résultat e la comparaison La structure fonamentale es méthoes arborescentes celle e l arbre binaire e recherche
Introuction Définitions informelle Définition informelle un arbre = ensemble e sommets tel que : un sommet unique appelé racine r qui n a pas e supérieur Tous les autres sommets sont atteints à partir e r par une branche unique Définition récursive (et constructive) un arbre = une racine r une liste arbres isjoints A 1,..., A n (sous-arbres) Un sommet e l arbre est la racine un sous-arbre
Introuction Terminologie père un sommet : le préécesseur un sommet fils un sommet : les successeurs un sommet frères : es sommets qui ont le même père noeu = sommet racine : noeu sans père feuille : noeu sans fils branche : chemin entre 2 noeus
Introuction Mesures sur les arbres Niveau (profoneur) un noeu : la longueur e la branche epuis la racine Hauteur un noeu : la longueur e la plus longue branche e ce noeu jusqu à une feuille Hauteur un arbre : la hauteur e la racine Taille un arbre : nombre e ses sommets
Introuction Arbres Binaires Définition informelle Dans un arbre binaire tout noeu a au plus eux fils Un arbre binaire possèe exactement eux sous-arbres (éventuellement vies) Définition récursive (et constructive) Un arbre binaire est Soit vie Soit composé une racine r e 2 sous arbres binaires ABG et ABD isjoints ABG : sous Arbre Binaire Gauche ABD : sous Arbre Binaire Droit
Introuction Eléments ans un arbre binaire Généralement ans un arbre binaire noeu racine contient un élément X ans ABG noeus X ans ABD noeus > X racine X sous-arbre Gauche X sous-arbre Droit X
Introuction Organisation un arbre binaire b f a c e g
Introuction Organisation un arbre binaire racine b f a c e g sous arbre Gauche sous arbre Droit
Introuction Organisation un arbre binaire b racine f racine a c e g ABG ABD ABG ABD
Introuction Arbres binaires particuliers Arbre binaire égénéré, filiforme : Chaque noeu possèe exactement un fils à éviter Arbre binaire complet (uniforme) : Chaque niveau est complètement rempli I.E. Tout sommet est soit une feuille au ernier niveau, soit possèe exactement 2 fils situation iéale Arbre binaire parfait (presque complet) : Tous les niveaux sont complètement remplis sauf éventuellement le ernier et ans ce cas les feuilles sont le plus à gauche possible Arbre binaire équilibré : La ifférence e hauteur entre 2 frères ne peut épasser 1
Introuction Arbres particuliers Arbre Parfait situation iéale l w b f u y a e g t v x z c
Introuction Arbres particuliers Arbre égénéré Pire es situations l w y z
Introuction Arbres particuliers Arbre presque parfait l w b f u y a c e g
Introuction Arbres particuliers Arbre équilibré l w b f u y c e x z
Primitives Plan 2 Primitives u TDA Arbin
Primitives Définitions es primitives Utilise le TDA ELEMENT Primitives : Création et estruction Construction Primitives e moification un arbre non vie Accès aux caractéristiques es noeus (aux éléments)
Réalisation Plan 3 Réalisations u TDA Arbin par cellules chaînées par cellules contiguës par curseurs (faux pointeurs) Réalisation es Arbres parfaits
Réalisation par cellules chaînées Plan 3 Réalisations u TDA Arbin par cellules chaînées par cellules contiguës par curseurs (faux pointeurs) Réalisation es Arbres parfaits
Réalisation par cellules chaînées Pointeurs sur ABG et ABD Un arbre binaire est soit un pointeur sur le noeu racine (arbre non vie) le pointeur NULL (arbre vie) Un noeu est une structure à trois champs : Une étiquette (élément) le sous-arbre gauche le sous-arbre roit Avantages : Définition récursive, simple à programmer, la plus utilisée Inconvénients : consomme e la mémoire ynamique
Réalisation par cellules chaînées Trauction en C / D e f i n i t i o n un noeu / typeef s t r u c t noeu { ELEMENT e t i q ; / E t i q u e t t e / s t r u c t noeu ag, / ABG / a ; / ABD / } NOEUD; / D e f i n i t i o n un a r b r e = un p o i n t e u r s u r son Noeu r a c i n e / typeef NOEUD ARBIN ; / l a r b r e v i e e s t l e p o i n t e u r n u l l / #efine ARBRE_VIDE NULL
Réalisation par cellules chaînées Schéma réalisation par pointeurs NOEUD ARBIN ag etiq a b f NULL a c
Réalisation par cellules contiguës Plan 3 Réalisations u TDA Arbin par cellules chaînées par cellules contiguës par curseurs (faux pointeurs) Réalisation es Arbres parfaits
Réalisation par cellules contiguës Par tableau Un arbre est une structure à eux champs : Un tableau où sont mémorisés les noeus Un entier qui onne l inice e la racine ans le tableau Un noeu est une structure à 3 champs : L étiquette u noeu Les inices e ses fils gauche et roit (ou 0 si pas e fils) Inconvénients : Définition non récursive (arbre sous-arbre) Utilisée uniquement si on traite un arbre unique
Réalisation par cellules contiguës Trauction en C / D e f i n i t i o n un noeu / typeef s t r u c t noeu { ELEMENT e t i q ; / E t i q u e t t e / i n t fg, / ABG / f ; / ABD / } NOEUD; / D e f i n i t i o n un a r b r e / typeef s t r u c t { NOEUD tab [ TAILLE_MAX ] ; i n t r a c i n e ; } rep ; typeef rep ARBIN ;
Réalisation par cellules contiguës Schéma réalisation par tableau ARBIN racine tab 4 1 2 2 3 a 0 0 b 3 0 c 0 4 2 6 5 6 f 0 0 7 8 fg etiq f
Réalisation par curseurs (faux pointeurs) Plan 3 Réalisations u TDA Arbin par cellules chaînées par cellules contiguës par curseurs (faux pointeurs) Réalisation es Arbres parfaits
Réalisation par curseurs (faux pointeurs) Simulation pointeurs sur ABG et ABD (même principe que les faux pointeurs ans le TDA Liste) Simulation e la mémoire : les noeus sont ans un tableau en variable globale Un arbre = inice e la racine (0 si vie) Un noeu est une structure à 3 champs l étiquette u noeu inice fils ABG (0 si vie) inice fils ABD (0 si vie) 2 stratégies e gestion es cellules isponibles 1 Chaîner entre elles les cellules isponibles 2 Marquer les cellules libres et parcourir le tableau pour trouver la 1re place libre
Réalisation par curseurs (faux pointeurs) Schéma réalisation par faux pointeurs Mémoire ARBIN A1 1 1 2 a 3 ARBIN A2 7 2 3 0 0 b c 4 0 4 0 0 5 6 0 i 0 7 6 j 8 8 0 k 0
Réalisation Réalisation es Arbres parfaits Plan 3 Réalisations u TDA Arbin par cellules chaînées par cellules contiguës par curseurs (faux pointeurs) Réalisation es Arbres parfaits
Réalisation Réalisation es Arbres parfaits Cas particuliers es arbre parfaits Solution efficace (accès + place mémoire) e réalisation un arbre parfait A e N étiquettes un tableau avec : 1 : inice e la racine e A T[i] étiquette u père T[2i] étiquette u fils gauche T[2i+1] étiquette u fils roit Attention : inefficace si N "loin e" n 2 (si A n est pas parfait)
Réalisation Réalisation es Arbres parfaits Schéma Arbre parfait avec tableau Si A est l abre parfait suivant : b f a c e g Alors la réalisation e A est le tableau : b f c a e f 0 1 2 3 4 5 6 7
Recherche Plan 4 Recherche un élément
Recherche Parcours arbres binaires Recherche un élément parcours un arbre Plusieurs types e parcours (selon application) Parcours en profoneur à main gauche (le + utilisé) Parcours récursif général Parcours particuliers (parcours préfixe, infixe, postfixe) Parcours en largeur (par niveaux)
Recherche Recherche en profoneur à main gauche chemin qui escen toujours le plus à gauche possible ans ce parcours chaque noeu est rencontré 3 fois 1 iere fois : à la escente à gauche ans ABG on applique au noeu le traitement 1 2 ieme fois : quan ABG a été parcouru, remontée par la gauche escente à gauche ans ABD on applique au noeu le traitement 2 3 ieme et ernière fois : quan ABG et ABD ont été parcourus, en remontant à roite on applique au noeu le traitement 3 si l arbre est vie on lui applique un traitement appelé terminaison
Recherche Récursif à main gauche P a r c o u r s (ARBIN A) Début SI A e s t v i e ALORS t e r m i n a i s o n (A) SINON t r a i t e m e n t 1 (A) P a r c o u r s ( sous arbregauche (A) ) t r a i t e m e n t 2 (A) P a r c o u r s ( sous a r b r e D r o i t (A) ) t r a i t e m e n t 3 (A) FSI Fin
Recherche Cas particuliers Lorsque le noeu est traité une seule fois Parcours préfixe (Racine Gauche Droit) le noeu racine est traité au premier passage avant le parcours es sous-arbres Parcours infixe ou symétrique (Gauche Racine Droit) le noeu racine est traité au secon passage après le parcours u sous-arbre gauche et avant le parcours u sous-arbre roit Parcours postfixe (Gauche Droit Racine ) le noeu racine est traité au ernier passage après le parcours es sous-arbres
Recherche Parcours particuliers Parcours préfixé R G D le noeu racine est traité au premier passage avant le parcours es sous-arbres P a r c o u r s (ARBIN A) Début SI A e s t v i e ALORS t e r m i n a i s o n (A) SINON traitement (A) P a r c o u r s (ABG e A) P a r c o u r s (ABD e A) Fin FSI
Recherche Parcours particuliers Parcours symétrique G R D le noeu racine est traité au secon passage après le parcours u sous-arbre gauche et avant le parcours u sous-arbre roit P a r c o u r s (ARBIN A) Début SI A e s t v i e ALORS t e r m i n a i s o n (A) SINON P a r c o u r s (ABG e A) traitement (A) P a r c o u r s (ABD e A) Fin FSI
Recherche Parcours particuliers Parcours postfixé G D R le noeu racine est traité au troisième passage après le parcours es sous-arbres gauche et roit P a r c o u r s (ARBIN A) Début SI A e s t v i e ALORS t e r m i n a i s o n (A) SINON P a r c o u r s (ABG e A) Fin FSI P a r c o u r s (ABD e A) traitement (A)
Recherche Parcours en Largueur P a r c o u r s E n L a r g e u r (ARBIN A) Début c r é e r une f i l e v i e F SI A e s t non v i e ALORS E n f i l e r A ans F TQ F non v i e FRE A < D é f i l e r (F) t r a i t e m e n t (A) SI ABG e A non Fin FSI é t r u i r e v i e ALORS E n f i l e r ABG e A ans F FSI SI ABD e A non v i e ALORS E n f i l e r ABD e A ans F FSI FTQ F
Ajonction Plan 5 Ajonction un élément Ajonction aux feuilles Ajonction à la racine
Ajonction Construction un arbre Un arbre A se construit par ajonction successives éléments x 2 méthoes principales : Ajonction aux feuilles : ajout e chaque x à une feuille e A construction "sur place" Ajonction à la racine : x evient la nouvelle racine e A construction "à côté"
Ajonction Préparation On transforme ELEMENT x en noeu e l Arbre X Soit ARBIN X : valeur e X x sous arbre gauche e X vie sous arbre roit e X vie
Ajonction Insertion à une feuille ARBIN A r b i n A j o u t e r F e u i l l e ( ARBIN A,ARBIN X) Début SI A e s t v i e ALORS A < X r e n v o y e r A SINON SI X <= A ALORS r e n v o y e r A r b i n A j o u t e r F e u i l l e ( ABG(A),X) SINON r e n v o y e r A r b i n A j o u t e r F e u i l l e ( ABD(A),X) FSI FSI Fin
Ajonction Insertion à la racine Ajout à la racine ajout à n importe quel niveau e A à rapprocher es méthoes auto-aaptatives es listes Méthoe pour ajouter X ans A : 1 Couper A en 2 ARBIN G et D G contient tous les éléments e A X D contient tous les éléments e A > X 2 Former un nouvel ARBIN A ont la racine avec : étiquette e A X ABG(A ) G ABD(A ) D
Ajonction Méthoe e coupure Coupure un ELEMENT X ans un ARBIN A en 2 ARBIN G et D Il n est pas nécessaire e parcourir TOUS les noeus e A seulement les noeus N situés sur le chemin e recherche e X ans A si noeu N X : G N + ABG(N) sur le bor roit e G si noeu N > X : D N + ABD(N) sur le bor gauche e D
Ajonction Exemple e coupure f q G D t a i e l g
Ajonction Exemple e coupure X f < q N G D t a i e l g
Ajonction Exemple e coupure f q G D t a i e l g
Ajonction Exemple e coupure f q G D t q a i t e l g
Ajonction Exemple e coupure X f >= N q t G D q a i t e l g
Ajonction Exemple e coupure f q G D t q a i t e l g
Ajonction Exemple e coupure f q G D t q a i a t e l g
Ajonction Exemple e coupure X f q G D < a i N t a q t e l g
Ajonction Exemple e coupure f q G D t q a i a t e l g
Ajonction Exemple e coupure f q G D t q a i a i t e l l g
Ajonction Exemple e coupure X f q G D t q a i a i t >= e N l l g
Ajonction Exemple e coupure f q G D t q a i a i t e l l g
Ajonction Exemple e coupure f q G D t q a i a e i t e l l g
Ajonction Exemple e coupure X f q G D t q a i a e i t e l l < g N
Ajonction Exemple e coupure f q G D t q a i a e i t e l l g
Ajonction Exemple e coupure f q G D t q a i a e i t e l g l g
Ajonction Procéure e coupure Coupure e A en 2 ARBIN G et D Coupure (ELEMENT X, ARBIN A, G, D ) Début SI A e s t v i e ALORS G < v i e D < v i e SINON SI X <= A ALORS D < A Coupure ( X, ABG(A), G, ABG(D) ) SINON G < A Coupure ( X, ABD(A), ABD(G), D) FSI FSI Fin
Ajonction Procéure ajout à la racine Ajout un élément X à la racine e l arbre A A r b i n A j o u t e r R a c i n e (ELEMENT X, ARBIN A) ARBIN R Début é t i q u e t t e e R < X ABG(R) < v i e ABD(R) < v i e Coupure (X, A, ABG(R), ABD(R) ) A < R Fin
Suppression Plan 6 Suppression un élément
Suppression Méthoes e suppression Pour supprimer un élément X ans A il faut 1 éterminer la place e X ans A noeu N 2 supprimer X avec réorganisation es éléments e A. 3 cas : N à 0 fils : suppression imméiate N à 1 fils : on remplace X par ce fils N à 2 fils : 2 solutions remplacer X par l élément qui lui est imméiatement inférieur Le MAX ans ABG(N) remplacer X par l élément qui lui est imméiatement supérieur Le MIN ans ABD(N)
Suppression Suppression un noeu à 0 fils u q z t a i e l g
Suppression Suppression un noeu à 0 fils u q z t a i e l X g
Suppression Suppression un noeu à 0 fils u q z t a i e g
Suppression Suppression un noeu à 1 fils u q z t i e l g
Suppression Suppression un noeu à 1 fils u q z X t i e l g
Suppression Suppression un noeu à 1 fils u q z X t i e l g
Suppression Suppression un noeu à 1 fils u q z i t e l g
Suppression Suppression un noeu à 2 fils u q z t a i e l g
Suppression Suppression un noeu à 2 fils u X q z t a i e l g
Suppression Suppression un noeu à 2 fils u ABG X q z t a i e l g
Suppression Suppression un noeu à 2 fils u ABG X q z t a i e l MAX g
Suppression Suppression un noeu à 2 fils u ABG X q z t a i e l MAX g
Suppression Suppression un noeu à 2 fils u l z t a i e g
Suppression Suppression u MAX (Le Max ans un ARBIN est l élément le plus à roite) Retourne l élément le plus gran ans MAX et ampute cet élément e A SupprimerMax (ELEMENT MAX, ARBIN A) Début SI ABD(A) e s t v i e ALORS MAX < é t i q u e t t e e A A < ABG(A) SINON SupprimerMax ( MAX, ABD(A) ) FSI Fin
Suppression Suppression un élément Supprime l élément X ans A. Retour : A si X / A sinon A X A r b i n S u p p r i m e r (ELEMENT X, ARBIN A) Début S I A n e s t pas v i e ALORS S I X < é t i q u e t t e e A ALORS A r b i n S u p p r i m e r (X, ABG(A) ) SINON S I X > é t i q u e t t e e A ALORS A r b i n S u p p r i m e r (X, ABD(A) ) SINON / On a t r o u v é l é l é m e n t / S I ABG(A) e s t v i e ALORS / 0 ou 1 f i l s / A < ABD(A) SINON S I ABD(A) e s t v i e ALORS / 1 f i l s / A < ABG(A) SINON / 2 f i l s / SupprimerMax ( MAX, ABG(A) ) FSI FSI F i n FSI FSI FSI é t i q u e t t e e A < MAX
Conclusion Plan 7 Conclusion sur les arbres
Conclusion Propriétés es arbres binaires Propiétés : Un arbre binaire ayant n sommets a une hauteur h qui vérifie : [log 2 (n + 1)] 1 h(a) n 1 Un arbre binaire e hauteur h a un nombre e sommets n qui vérifie : h + 1 n 2 h+1 1 Utilisation : mesures e complexité Parcours e chaque noeu e l arbre en O(n) Parcours une branche : complexité ans le pire es cas en O(h) = O(log(n)) Objectif : avoir h minimum (arbre complet ou presque ou équilibré)
Fin The En That all folks...