1 / 24

Chapitre VI.2 Arbres binaires

Chapitre VI.2 Arbres binaires . Définition (1). Dans un arbre binaire un nœud peut avoir au plus deux fils Fils Gauche (FG) Fils Droit (FD). 1. 5. 6. 7. 4. 8. 9. 2. Définition (2). La base : un arbre vide est un arbre binaire

yvonne
Télécharger la présentation

Chapitre VI.2 Arbres binaires

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapitre VI.2Arbres binaires

  2. Définition (1) • Dans un arbre binaire un nœud peut avoir au plus deux fils • Fils Gauche (FG) • Fils Droit (FD) 1 5 6 7 4 8 9 2

  3. Définition (2) • La base : un arbre vide est un arbre binaire • La récurrence : si r est un nœud et si B1 et B2 sont des arbres binaires alors il existe un arbre binaire avec une racine r et un sous-arbre gauche B1 et un sous-arbre droit B2 • Non-symétrie : 1 1 6 6

  4. info info info Structures de données pour les arbres binaires • Type PtrNoeud = ^Noeud Enregistrement Noeud info : TypeInfo FilsGauche : PtrNoeud FilsDroit : PtrNoeud Fin Enregistrement; FG FD FG FD FG FD

  5. Type abstrait Arbre Binaire • Type Arbre =PtrNoeud • Signature • Type Arbre • Opérations • Arbre-vide : ->Arbre • <-,-,-> : PtrNoeud X Arbre X Arbre ->Arbre • Racine: Arbre ->PtrNoeud • FG : Arbre ->Arbre • FD : Arbre ->Arbre • contenu : PtrNoeud>Info • est-vide? : Arbre ->Booléen

  6. Axiomes • Préconditions • Racine(B) est-defini-ssi B<> arbre-vide • G(B) est-defini-ssi B<> arbre-vide • D(B) est-defini-ssi B<> arbre-vide • Axiomes • Racine(<r,B1,B2>)=r • G(<r,B1,B2>)=B1 • D(<r,B1,B2>)=B2

  7. Arbres Binaires complets • Chaque nœud est soit une feuille soit d’un degré = 2 1 1 5 6 5 6 7 4 7 4 8 9 8 9 2

  8. Un arbre complet d’arité 2 • Cas particulier des arbres binaires complets : toutes les feuilles ont la même profondeur 1 1 5 6 5 6 7 4 7 4 8 9 8 9

  9. Un arbre complet d’arité 2 (1) Combien de feuilles y a–t-il dans un arbre complet d’arité 2 et de profondeur h? • Les feuilles sont les fils des nœuds à la profondeur h-1 • La racine a 2 fils à la profondeur 1, chacun d’eux a 2 fils à la profondeur 2,, • 2x2 • Etc… • Le nombre de feuilles est donc 2h • La hauteur d’un arbre complet comportant n feuilles est donc log n (2) Combien de nœuds internes ? • 1 – racine +2 +2x2 + …+ 2h-1 =

  10. Parcours des arbres binaires(1) • Parcours en profondeur • Procédure Parcours(B: Arbre) • Début • Si est-vide(B) alors Terminaison • sinon • Traitement 1 • Parcours(FG(B)) • Traitement 2 • Parcours (FD(B)) • Traitement 3 • FSi FinParcours

  11. Parcours en Ordre-« Préfixe » • Procédure ParcoursPréfixe(B: Arbre) • Début • Si est-vide(B) alors Terminaison • sinon • Traitement 1 • Parcours(FG(B)) • Parcours (FD(B)) FinParcours 1 5 6 7 4 « +ab » 8 9 1,6,5,7,4,8,9

  12. Ordre « Infixe » • Procedure ParcoursInfixe(B: Arbre) • Début • Si est-vide(B) alors Terminaison • sinon • Parcours(g(B)) • Traitement 2 • Parcours (d(B)) • FSi FinParcours 1 5 6 7 4 « a+b » 8 9 6,1,7,5,8,4,9

  13. Ordre suffixe- postfixe • Procédure ParcoursSuffixe(B: Arbre) • Début • Si est-vide(B) alors Terminaison • sinon • Parcours(FG(B)) • Parcours (FD(B)) • Traitement 3 • FSi FinParcours 1 5 6 7 4 8 9 6,7,8,9,4,5,1

  14. Représentation des expressions arithmétiques + Expression usuelle: x+(a-b)*y x * - y a b

  15. Représentation des expressions arithmétiques + Préfixe + x * - a b y x + (x)(*-aby) (*(-(a)(b))(y)) Chaque opérateur précède ces deux opérandes * - y a b

  16. Représentation des expressions arithmétiques + Postfixe x a b – y * + x (x)(ab-y*)+ (ab-)(y)* (a)(b)- Chaque opérateur est précédé par ces deux opérandes * - y a b

  17. Représentation des expressions arithmétiques + Infixe x+a-b*y x Ambigüité! Ajouter systématiquement les parenthèses aux expressions * - y a b

  18. Arbres binaires de recherche • Objectif : ordonner par clés les informations stockées. • Les opérations : recherche, min, max, prédécesseur, successeur, insérer, supprimer. • Dans le meilleur de cas la complexité de ces opérations est • Dans le pire des cas , n – nombre de nœuds • Propriété fondamentale : • B: ABR, x –nœud • SAG : sous-arbre gauche de racine r=x • SAD: sous-arbre droit de racine r=x • Si • Si 5 3 7

  19. ABR : quelques opérations • Pb : Imprimer toutes les clés dans l’ordre croissant • Solution : parcours Infixe (FG, r, FD) • Procedure ParcoursInfixe (x: Arbre) • Debut • Si x<>Nil • alors • ParcoursInfixe(FG(x)) • imprimer (clé(x)) • ParcoursInfixe(FD(x)) • FSi • Fin ParcoursInfixe 6 3 7 2 8 5 Résultat : 2 3 5 6 7 8

  20. Recherche dans un ABR(1) • Problème : rechercher un nœud ayant une clé donnée. • La fonction renvoie NIL si la clé ne se trouve pas dans l’arbre ou le pointeur sur le nœud qui contient la clé. • Fonction RechercheABR (A: PtrNoeud, k: entier):PtrNoeud • Debut • Si est-vide(A) ou k=clé[A] • alors retourner A • sinon • Si k< clé(A) • alors retourner RechercheABR(FG(A),k) • sinon retourner RechercheABR(FD(A),k) • FSi • FSi Fin recherche Complexité la hauteur de l’arbre

  21. Recherche dans un ABR(2) • Algorithme itératif • Fonction RechercheIterABR(A: PtrNoued, k: entier) : PtrNoeud • Début • TQ A<>NIL et clé(A)<>k faire • Si k<clé(A) • alors A:= FG(A) • sinon A:=FD(A) FSi FTQ FinRechercheIterABR

  22. MinMax dans un ABR Min : aller toujours à gauche jusqu'à atteindre le dernier FG – feuille { les test est-vide(A) =faux} Tq FG(A)< > Nil A:=FG(A) FTq retourner contenu(A) Max : réciproque { les test est-vide(A) =faux} Tq FD(A)< > Nil A:=FD(A) FTq retourner contenu(A)

  23. Insertion dans les ABRs Procédure Insérer(val x : Type Info, réf A: PtrNœud ) Debut Si A=Nil alors new A A^.info:=x; A^.FilsG:=Nil; A^.FilsD:=Nil; sinon Si x<A^.info alors Insérer(x, A^.FilsG) sinon Si x>A^.Info alors Insérer(x, A^.FilsD) sinon FSi FSi FSi FinInsérer

  24. Suppression dans un ABR • Supprimer le nœud contenant la clé X donnée • La relation d’ordre doit être préservée • (1) Si c’est un nœud sans fils – la suppression est immédiate • (2) Si c’est un nœud qui a un seul fils, il suffit de remplacer le noeud par ce fils • (3) Si c’est un nœud qui a deux fils, alors remplacer le nœud contenant l’élément à supprimer par celui qui lui est immédiatement inférieur(qui contient le plus grand élément de son sous-arbre gauche). • Cf TDs.

More Related