Algorithmique Cours 9 - Arbres

89
Algorithmique : structure des données François Lambert

Transcript of Algorithmique Cours 9 - Arbres

Page 1: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 1/89

Algorithmique :

structure des donnéesFrançois Lambert

Page 2: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 2/89

Page 3: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 3/89

● Definition informelle

● Un arbre est un ensemble de sommets tel que :

✓ il existe un sommet unique appele racine qui n’a pas de pere

✓ tous les autres sommets sont atteints a partir de la racine, par une

branche unique

● Definition recursive

● Un arbre est constitue de

une racine✓ une liste d’arbres disjoints A1, ..., An (sous arbres)

Un sommet de l’arbre est la racine d’un sous-arbre

Structures arborescentes

Page 4: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 4/89

 

Représentation graphique d’un arbre

Page 5: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 5/89

● Représentation

● de l’organisation de fichiers informatiques

● d’une expression arithmétique

Exemple d’utilisation graphique des arbres

Page 6: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 6/89

● Représentation

● de mots, de phrases (en linguistique)

● arbre de dérivation en analyse syntaxique

arbre de aabbabab avec

S -> aSbε

S -> ε

Exemple d’utilisation graphique des arbres

Page 7: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 7/89

● Représentation

● arbre généalogique

● arbre de tournoi

Exemple d’utilisation graphique des arbres

Page 8: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 8/89

● Se prêtent bien aux algorithmes récursifs

Particularité des arbres

Page 9: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 9/89

● nœud = sommet

● pere d’un sommet :

● le predecesseur d’un sommet

● fils d’un sommet

● les successeurs d’un sommet

● freres● des sommets qui ont le meme pere

● racine

● nœud sans pere

● feuille :

● nœud sans fils

● branche

● chemin entre 2 nœuds

Terminologie

Page 10: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 10/89

● Niveau (profondeur) d’un nœud

● la longueur de la branche depuis la racine

● Hauteur d’un nœud

● la longueur de la plus longue branche de ce nœud jusqu’a une

feuille

● Hauteur d’un arbre

● la hauteur de la racine

● Taille d’un arbre

● nombre de ses sommets

Terminologie

Page 11: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 11/89

Arbres binaires

Page 12: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 12/89

● Definition informelle

● Dans un arbre binaire, tout nœud a au plus deux fils

● Un arbre binaire possede exactement deux sous-arbres

(eventuellement vides)

● Definition recursive● un arbre binaire est

✓ soit vide

✓ soit composé

● d’une racine

● de deux sous-arbres binaires ABG et ABD disjoints

» ABG : sous Arbre Binaire Gauche

» ABD : sous Arbre Binaire Droit

Arbre binaire

Page 13: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 13/89

● Arbre binaire dégénéré, filiforme

● chaque noeud possède exactement un fils

-> à éviter 

Arbres binaires particuliers

Page 14: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 14/89

● Arbre binaire parfait (complet)

● chaque niveau est complètement rempli

● Tout sommet est soit une feuille au dernier niveau, soit possède

exactement deux fils

Arbres binaires particuliers

Page 15: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 15/89

● Arbre binaire presque parfait

● Tous les niveaux sont complètement remplis sauf éventuellement

le dernier et dans ce cas les feuilles sont le plus a gauche

possible

Arbres binaires particuliers

Page 16: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 16/89

● Arbre binaire équilibré

● la différence de hauteur entre deux frère ne peut dépasser 1

Arbres binaires particuliers

Page 17: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 17/89

● Dans un arbre binaire de recherche● nœud racine contient un element X

● dans ABG : les nœuds sont ≤ X● dans ABD : les nœuds sont > X

Arbres binaires de recherche (ABR)

Page 18: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 18/89

 

Exemple d’arbre binaire de recherche

Page 19: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 19/89

 

Exemple d’arbre binaire de recherche

Page 20: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 20/89

 

Exemple d’arbre binaire de recherche

Page 21: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 21/89

● Un arbre binaire de recherche est equilibre si la difference de hauteurentre 2 freres ne depasse pas 1

● Du nom des 2 inventeurs (Adelson-Velsky et Landis, 1962)

 

Arbre binaire de recherche équilibré (AVL)

Page 22: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 22/89

Implémentation

des arbres binaires

Page 23: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 23/89

● Implementation du TDA ARBRE (binaire)● par cellules chaınees

● par cellules contigues● par curseurs (faux pointeurs)

● realisation des arbres parfaits

Implémentation des arbres binaires

Page 24: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 24/89

● Un arbre binaire est soit :● un pointeur sur le nœud racine (arbre non vide)

● le pointeur NULL

● Un nœud est une structure a trois champs :

● une etiquette, valeur (element)

● le sous-arbre gauche

● le sous-arbre droit

● Definition recursive la plus simple a programmer 

Implémentation par cellules chaînées

é î é

Page 25: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 25/89

typedef struct nœud {

ELEMENT etiq; // etiquettestruct nœud *ag; // ABG : fils gauche

struct nœud *ad; // ABD : fils droit

} NOEUD

typedef NŒUD *ARBRE

#define ARBRE_VIDE NULL

Implémentation par cellules chaînées

I lé t ti ll l h î é

Page 26: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 26/89

 

Implémentation par cellules chaînées

I lé t ti ll l ti ü

Page 27: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 27/89

● Un arbre est une structure a deux champs

● un tableau ou sont memorises les nœuds

● un entier qui donne l’indice de la racine dans le tableau

● Un nœud est une structure a trois champs

● l’etiquette du nœud

● Les indices de ses fils gauche et droit (ou 0 si pas de fils)

Implémentation par cellules contigües

I lé t ti ll l ti ü

Page 28: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 28/89

Implémentation par cellules contigües

typedef struct noeud {

ELEMENT etiq ; /* etiquette */int fg; // fils gauche

int fd; // fils droit

} NOEUD;

typedef struct {NOEUD tab [TAILLE_MAX ] ;

int racine

} rep;

typedef rep * ARBRE;

I lé t ti ll l ti ü

Page 29: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 29/89

Implémentation par cellules contigües

 

I lé t ti (f i t )

Page 30: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 30/89

Implémentation par curseurs (faux pointeurs)

● Meme principe que les faux pointeurs dans le TDA Liste :● simulation de la memoire : les nœuds sont dans un tableau en

variable globale

● Un arbre = indice de la racine (0 si vide)

● Un nœud est une structure a trois champs :

● l’etiquette du nœud● l’indice du fils gauche (ou 0 si il est vide)

● l’indice du fils droit (ou 0 si il est vide)

● Gestion des cellules disponibles● marquer les cellules libres et parcourir le tableau pour trouver la

premiere place libre

Implémentation par c rse rs (fa pointe rs)

Page 31: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 31/89

Implémentation par curseurs (faux pointeurs)

 

Cas particulier des arbres parfaits

Page 32: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 32/89

Cas particulier des arbres parfaits

● Solution efficace (acces + place memoire) de realisation d’un arbreparfait A de N etiquettes :

● Un tableau T avec

● T[1] : racine de A

● T[i] : etiquette du pere

● T[2i] : etiquette du fils gauche

● T[2i+1] : etiquette du fils droit 

Cas particulier des arbres parfaits

Page 33: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 33/89

● Si A est larbre parfait suivant :

● Alors la réalisation de A est le tableau :

Cas particulier des arbres parfaits

d b f c a e g

0 1 2 3 4 5 6 7

Page 34: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 34/89

Manipulation

des arbres binaires

Opérations sur les arbres

Page 35: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 35/89

● Calcul de la hauteur 

● Calcul du nombre de noeuds, du nombre de feuilles

● Recherche d’un élément

● Insertion d’un élément

● Suppression d’un élément

● Parcours

Opérations sur les arbres

Primitives des arbres binaires

Page 36: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 36/89

● ArbreVide(ARBRE A)● indique si un arbre est vide ou non

● ARBRE FilsGauche(ARBRE A)

● renvoie le fils gauche de l’arbre A

● ARBRE FilsDroit(ARBRE A)

● renvoie le fils droit de l’arbre A

● ARBRE EstFeuille(ARBRE A)

● indique si l’arbre A est une feuille

● ARBRE ArbreCreer()

● cree et renvoie un arbre

Primitives des arbres binaires

Primitives des arbres binaires

Page 37: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 37/89

● ELEMENT ValeurRacine(ARBRE A)● renvoie l’etiquette de la racine de l’arbre A

● ArbreDetruire(ARBRE A)

● detruit un arbre A

Primitives des arbres binaires

Page 38: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 38/89

Parcours d’arbres binaires

Parcours d’un arbre

Page 39: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 39/89

● Parcours d’un arbre : parcours de tous les nœuds avec

éventuellement l’application d’une fonction (traitement).

● Le parcours se fait selon un certain ordre

● Parcours en profondeur 

✓ un parcours est dit «en profondeur » si, lorsque l’arbre n’est pas

vide, le parcours de l’un des deux sous-arbres ne commence que

lorsque le parcours de l’autre est terminé

✓ Il existe 3 types de parcours en profondeur : prefixe, infixe ou

postfixe

● Parcours en largeur 

✓ un parcours est dit « en largeur » lorsqu’a partir d’un sommet S, les

freres de S sont explores avant les fils de S.

Parcours d un arbre

Parcours en profondeur

Page 40: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 40/89

● Parcours en profondeur de gauche a droite (le parcours droite-gauche se deduit par symetrie)

● Prefixe (Racine / Gauche / Droit)

✓ traitement de la racine

✓ parcours prefixe du sous-arbre gauche

✓ parcours prefixe du sous-arbre droit

● Infixe ou symetrique (Gauche / Racine / Droit)✓ parcours infixe du sous-arbre gauche

✓ traitement de la racine

✓ parcours infixe du sous-arbre droit

● Postfixe ou suffixe (Gauche / Droit / Racine)

✓ parcours suffixe du sous-arbre gauche

✓ parcours suffixe du sous-arbre droit

✓ traitement de la racine

Parcours en profondeur 

Parcours en profondeur

Page 41: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 41/89

● Pour l’arbre

● Les ordres de traitement des noeuds sont, selon les parcours

Parcours en profondeur 

Parcours préfixe

Page 42: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 42/89

● parcours Racine / Gauche / Droit : le nœud racine est traite au premierpassage avant le parcours des sous-arbres

● Algrithme :

Parcours(ARBRE A) DEBUT

Si non(ArbreVide(A)) ALORS

traitement(ValeurRacine(A))

Parcours(FilsGauche(A))Parcours(FilsDroit(A))

FINSI

FIN

Parcours préfixe

Parcours infixe

Page 43: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 43/89

● parcours Gauche / Racine / Droit : le nœud racine est traite apres leparcours du sous-arbre gauche et avant le parcours du sous-arbre

droit

● Algorithme :

Parcours(ARBRE A) DEBUT

Si non(ArbreVide(A)) ALORS

Parcours(FilsGauche(A))traitement(ValeurRacine(A))

Parcours(FilsDroit(A))

FINSI

FIN

Parcours infixe

Parcours infixe et arbre binaire de recherche

Page 44: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 44/89

● Un arbre binaire est un arbre binaire de recherche si et seulement si laliste des valeurs des nœuds etablie dans l’ordre infixe est croissante

● Exemple

● l’arbre suivant est un ABR. La liste des valeurs des nœuds etablie

dans l’ordre infixe est croissante : {2, 4, 7, 12, 20}

Parcours infixe et arbre binaire de recherche

Parcours suffixe

Page 45: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 45/89

● parcours Gauche / Droit / Racine : le nœud racine est traite apres lesparcours des sous-arbre gauche et droit

● Algorithme :

Parcours(ARBRE A) DEBUT

Si non(ArbreVide(A)) ALORS

Parcours(FilsGauche(A))

Parcours(FilsDroit(A))

traitement(ValeurRacine(A))

FINSI

FIN

Parcours suffixe

Parcours en largeur

Page 46: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 46/89

● un parcours est dit « en largeur » lorsqu’a partir d’un sommet S, lesfreres de S sont explores avant les fils de S.

● Idee : utiliser une file pour enfiler les sommets a traiter 

Parcours en largeur 

Parcours en largeur : algorithme

Page 47: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 47/89

ParcoursLargeur(ARBRE A)F: une file d’attente

DEBUTCreer la file FSi non(ArbreVide(A)) ALORS

Enfiler A dans FTANT QUE non(FileVide(F)) FAIRE

 A = Defiler(F)traitement(ValeurRacine(A))SI non(ArbreVide(FilsGauche(A)) ALORS

Enfiler FilsGauche(A) dans FFINSI

SI non(ArbreVide(FilsDroit(A)) ALORSEnfiler FilsDroit(A) dans FFINSI

FINTANTQUEFINSIDetruire F

FIN

g g

Page 48: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 48/89

Opérations sur les arbres

binaires de recherche

Opérations des arbres binaires de recherche

Page 49: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 49/89

● Recherche d’un élément

● Insertion d’un élément

● Suppression d’un élément

p

Primitives des arbres binaires de recherche

Page 50: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 50/89

● ABRVide(ABR A)● indique si un ABR A est vide ou non

● ABR ABG(ABR A)

● renvoie le fils gauche de ABR A

● ABR ABD(ABR A)

● renvoie le fils droit de l’ABR A

● ABR EstFeuille(ABR A)

● indique si l’arbre A est une feuille

● ABR ABRCreer()● cree et renvoie un ABR

Primitives des arbres binaires de recherche

Page 51: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 51/89

● ELEMENT ValeurRacine(ABR A)● renvoie l’etiquette de la racine de l’ABR A

● ABRDetruire(ABR A)

● detruit un ABR A

Recherche d’un élément dan sun ABR

Page 52: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 52/89

ABRRechercher(ELEMENT e, ABR A)

DEBUT

si ABRVide(A) alors

renvoyer FAUX

sinon si e = ValeurRacine(A) alors

renvoyer VRAIsinon si e < ValeurRacine(A) alors

renvoyer (ABRRechercher(e, ABG(A))

sinon

renvoyer (ABRRechercher(e, ABD(A))

FIN

→ Complexite : O(Hauteur(A))

Construction d’un arbre

Page 53: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 53/89

● Un arbre A se construit par insertions successives d’elements x

 

● 2 methodes principales :● insertion aux feuilles

✓ ajout de chaque element e a une feuille de A

● insertion a la racine

✓ L’element e devient la nouvelle racine A

Insertion d’une feuille

Page 54: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 54/89

ABRInsererFeuille(ELEMENT X, ABR A)

DEBUT

Si ABRVide(A) Alors

étiquette de A ← X

 ABG(A) ← ABR_VIDE

 ABD(A) ← ABR_VIDE

SinonSi X <= ValeurRacine(A) Alors

 ArbreInsererFeuille(X, ABG(A))

Sinon

 ArbreInsererFeuille(X, ABD(A))

FIN

Insertion à la racine

Page 55: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 55/89

● L’element « X » a ajouter devient la nouvelle racine.

● Il est necessaire de separer l’ancien ABR en 2 sous-arbres● le sous-arbre gauche de la racine et qui contiendra des valeurs

inferieures ou egales a l’element X

● le sous-arbre droit de la racine qui contiendra des valeurs

strictement superieures a X

Insertion à la racine

Page 56: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 56/89

● 2 etapes

● couper l’arbre en 2 sous-arbres gauche et droit selon les regles ci-

dessus✓ G contient tous les elements de A ≤ X

✓ D contient tous les elements de A > X

● former un nouvel ABR A’ avec :

✓ etiquette de A’ : X

✓ fils gauche de A’ : G

✓ fils droit de A’ : D

Méthodes de coupure

Page 57: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 57/89

● Coupure d’un element X dans un ARBRE A

● il n’est pas necessaire de parcourir tous les nœuds de A,

seulement les nœuds N situes sur le chemin de recherche de Xdans A

✓ Si nœud N ≤ X : on ajoute le nœud N et ABG(N) dans G

✓ Si nœud N > X : on ajoute le nœud N et ABD(N) dans D

Exemple de coupure

Page 58: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 58/89

● Soit l’arbre ci-dessous, on souhaite inserer l’element ‘f’ a la racine de

l’arbre

● Nœuds parcourus (chemin de recherche de ‘f’) : q, d, i, e, g

Exemple de coupure

Page 59: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 59/89

● N vaut ‘q’ et N > X car ‘q’ > ‘f’ : ajout de N et son fils droit a D

Exemple de coupure

Page 60: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 60/89

● N vaut ‘q’ et N > X car ‘q’ > ‘f’ : ajout de N et son fils droit a D

Exemple de coupure

Page 61: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 61/89

● N vaut ‘q’ et N > X car ‘q’ > ‘f’ : ajout de N et son fils droit a D

Exemple de coupure

Page 62: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 62/89

● N vaut ‘d’ et N <= X car ‘d’ <= ‘f’ : ajout de N et son fils gauche a G

Exemple de coupure

Page 63: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 63/89

● N vaut ‘d’ et N <= X car ‘d’ <= ‘f’ : ajout de N et son fils gauche a G

Exemple de coupure

Page 64: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 64/89

● N vaut ‘d’ et N <= X car ‘d’ <= ‘f’ : ajout de N et son fils gauche a G

Exemple de coupure

Page 65: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 65/89

● N vaut ‘i’ et N > X car ‘i’ > ‘f’ : ajout de N et son fils droit a D

Exemple de coupure

Page 66: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 66/89

● N vaut ‘i’ et N > X car ‘i’ > ‘f’ : ajout de N et son fils droit a D

Exemple de coupure

Page 67: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 67/89

● N vaut ‘i’ et N > X car ‘i’ > ‘f’ : ajout de N et son fils droit a D

Exemple de coupure

Page 68: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 68/89

● N vaut ‘e’ et N <= X car ‘e’ <= ‘f’ : ajout de N et son fils gauche a G

Exemple de coupure

Page 69: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 69/89

● N vaut ‘e’ et N <= X car ‘e’ <= ‘f’ : ajout de N et son fils gauche a G

Exemple de coupure

Page 70: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 70/89

● N vaut ‘e’ et N > X car ‘g’ > ‘f’ : ajout de N et son fils droit a D

Exemple de coupure

Page 71: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 71/89

● N vaut ‘e’ et N > X car ‘g’ > ‘f’ : ajout de N et son fils droit a D

Exemple de coupure

Page 72: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 72/89

● N vaut ‘e’ et N > X car ‘g’ > ‘f’ : ajout de N et son fils droit a D

Procédure de coupure

Page 73: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 73/89

● Coupure de A en 2 ABR G et D

Coupure (ELEMENT X, ABR A, ABR G , ABR D )

DébutSi ABRVide(A) ALORS

G ← ABR_VIDE

D ← ABR_VIDE

SINONSI X <= ValeurRacine(A) ALORS

D ← A

Coupure ( X, ABG(A) , G, ABG(D) )

SINON

G←ACoupure ( X, ABD(A) , ABD(G) , D)

FSI

FSI

Fin

Insertion à la racine

Page 74: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 74/89

● Ajout d’un element X a la racine de l’arbre A

ABRInsererRacine(ELEMENT X, ABR A)

ABR RDébut

etiquette de R ← X

 ABG(R) ← ABR_VIDE

 ABD(R) ) ← ABR_VIDE

Coupure (X, A, ABG(R) , ABD(R) )

 A ← R

Fin

Suppression d’un élément

Page 75: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 75/89

● Pour supprimer un element X dans A, il faut :● determiner la place de X dans A : nœud N

● supprimer X et reorganiser les elements de A. 3 cas possibles :

1. N a 0 fils (X = ValeurRacine(N)) : suppression immediate2. N a 1 fils : on remplace N par ce fils

3. N a 2 fils : 2 solutions

● remplacer X par l’element qui lui est immediatement inferieur :

le MAX dans ABG(N)● remplacer X par l’element qui lui est immediatement superieur :

le MIN dans ABD(N)

Suppression d’un élément

Page 76: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 76/89

● Pour supprimer un element X dans A, il faut :● determiner la place de X dans A : nœud N

● supprimer X et reorganiser les elements de A. 3 cas possibles :

1. N a 0 fils (X = ValeurRacine(N)) : suppression immediate2. N a 1 fils : on remplace N par ce fils

3. N a 2 fils : 2 solutions

● remplacer X par l’element qui lui est immediatement inferieur :

le MAX dans ABG(N)● remplacer X par l’element qui lui est immediatement superieur :

le MIN dans ABD(N)

Suppression d’un élément

Page 77: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 77/89

● Pour supprimer un element X dans A, il faut :● determiner la place de X dans A : nœud N

● supprimer X et reorganiser les elements de A. 3 cas possibles :

1. N a 0 fils (X = ValeurRacine(N)) : suppression immediate

Suppression d’un élément

Page 78: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 78/89

● Pour supprimer un element X dans A, il faut :● determiner la place de X dans A : nœud N

● supprimer X et reorganiser les elements de A. 3 cas possibles :

2. N a 1 fils : on remplace X par ce fils

Suppression d’un élément

Page 79: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 79/89

● Pour supprimer un element X dans A, il faut :● determiner la place de X dans A : nœud N

● supprimer X et reorganiser les elements de A. 3 cas possibles :

2. N a 1 fils : on remplace N par ce fils

Suppression d’un élément

Page 80: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 80/89

● Pour supprimer un element X dans A, il faut :● determiner la place de X dans A : nœud N

● supprimer X et reorganiser les elements de A. 3 cas possibles :

2. N a 1 fils : on remplace N par ce fils

Suppression d’un élément

Page 81: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 81/89

● Pour supprimer un element X dans A, il faut :● determiner la place de X dans A : nœud N

● supprimer X et reorganiser les elements de A. 3 cas possibles :

3. N a 2 fils : 2 solutions● remplacer X par l’element qui lui est immediatement inferieur : le MAX

dans ABG(N)● remplacer X par l’element qui lui est immediatement superieur : le MIN

dans ABD(N)

Suppression d’un élément

Page 82: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 82/89

● Pour supprimer un element X dans A, il faut :

● determiner la place de X dans A : nœud N

● supprimer X et reorganiser les elements de A. 3 cas possibles :3. N a 2 fils : 2 solutions

● remplacer X par l’element qui lui est immédiatement inferieur : le

MAX dans ABG(N)

Suppression d’un élément

Page 83: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 83/89

● Pour supprimer un element X dans A, il faut :● determiner la place de X dans A : nœud N

● supprimer X et reorganiser les elements de A. 3 cas possibles :

3. N a 2 fils : 2 solutions● remplacer X par l’element qui lui est immediatement inferieur : le

MAX dans ABG(N)

Suppression d’un élément

Page 84: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 84/89

● Pour supprimer un element X dans A, il faut :● determiner la place de X dans A : nœud N

● supprimer X et reorganiser les elements de A. 3 cas possibles :

3. N a 2 fils : 2 solutions● remplacer X par l’element qui lui est immediatement inferieur : le

MAX dans ABG(N)

Suppression d’un élément

Page 85: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 85/89

● Pour supprimer un element X dans A, il faut :● determiner la place de X dans A : nœud N

● supprimer X et reorganiser les elements de A. 3 cas possibles :

3. N a 2 fils : 2 solutions■ remplacer X par l’element qui lui est immediatement inferieur : le

MAX dans ABG(N)

Suppression d’un élément

P i l X d A il f

Page 86: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 86/89

● Pour supprimer un element X dans A, il faut :● determiner la place de X dans A : nœud N

● supprimer X et reorganiser les elements de A. 3 cas possibles :

3. N a 2 fils : 2 solutionsremplacer X par l’element qui lui est immediatement inferieur : le MAX

dans ABG(N) :on cree une fonction qui renvoie et supprime le MAX d’un ABR, c’est-a-dire l’element le plus a droite.

ELEMENT SupprimerMax (ABR A)Début

SI ABRVide(ABD(A)) ALORSELEMENT racine ← ValeurRacine(A) A ← ABG(A)renvoyer racine

SINONSupprimerMax (ABD(A) )

FINSI

Fin

Suppression d’un élément

ABRS i (ELEMENT X ABR A)

Page 87: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 87/89

ABRSupprimer(ELEMENT X, ABR A)Début

SI non ABRVide(A) ALORSSI X < ValeurRacine(A) ALORS

ABRSupprimer(X, ABG(A) )SINON

SI X > ValeurRacine(A) ALORSABRSupprimer (X, ABD(A) )

SINON /* On a trouve l’element */SI ABRVide(ABG(A)) ALORS

A ← ABD(A) /* 0 ou 1 fils : le fils droit*/SINON

SI EstVide(ABD(A)) ALORSA ← ABG(A) /* 1 fils : le fils gauche */

SINON /* 2 fils */

Etiquette de A ← SupprimerMax (ABG(A))FSIFSI

FSIFSI

FSI

FIN

Page 88: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 88/89

Propriétés des arbres binaires

Propriétés des arbres binaires

P i t

Page 89: Algorithmique Cours 9 - Arbres

8/10/2019 Algorithmique Cours 9 - Arbres

http://slidepdf.com/reader/full/algorithmique-cours-9-arbres 89/89

● Proprietes

● un arbre binaire ayant n sommets a une hauteur h qui verifie

log2(n+1) – 1 ≤ h(a) ≤ n – 1● un arbre binaire de hauteur h a un nombre de sommets n qui verifie

h + 1 ≤ n ≤ 2h+1 -1

● Mesure de complexite● parcours de chaque nœud de l’arbre : en O(n)

● parcours d’une branche : complexite dans le pire des cas en O(h) = O(log

(n))

● Objectif  

● avoir h minimum (arbre complet ou presque ou equilibre)