Algorithmique Cours 9 - Arbres
Algorithmique Cours 9 - Arbres
Algorithmique Cours 9 - Arbres
Arbres
Structures arborescentes
De finition informelle
Un arbre est un ensemble de sommets tel que :
il existe un sommet unique appele racine qui na pas de pe re
tous les autres sommets sont atteints a partir de la racine, par une
branche unique
De finition re cursive
Un arbre est constitue de
une racine
une liste darbres disjoints A1, ..., An (sous arbres)
Un sommet de larbre est la racine dun sous-arbre
arbre de tournoi
Terminologie
nud = sommet
pe re dun sommet :
le pre de cesseur dun sommet
fils dun sommet
les successeurs dun sommet
fre res
des sommets qui ont le meme pe re
racine
nud sans pe re
feuille :
nud sans fils
branche
chemin entre 2 nuds
Terminologie
Niveau (profondeur) dun nud
la longueur de la branche depuis la racine
Arbres binaires
Arbre binaire
De finition informelle
Dans un arbre binaire, tout nud a au plus deux fils
Un arbre binaire posse de exactement deux sous-arbres
(e ventuellement vides)
De finition re cursive
un arbre binaire est
soit vide
soit compose
dune racine
de deux sous-arbres binaires ABG et ABD disjoints
ABG : sous Arbre Binaire Gauche
ABD : sous Arbre Binaire Droit
Implmentation
des arbres binaires
Manipulation
des arbres binaires
Parcours
Parcours en profondeur
Parcours en profondeur de gauche a droite (le parcours droitegauche se de duit par syme trie)
Pre fixe (Racine / Gauche / Droit)
traitement de la racine
parcours pre fixe du sous-arbre gauche
parcours pre fixe du sous-arbre droit
Infixe ou syme trique (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
Pour larbre
Parcours prfixe
parcours Racine / Gauche / Droit : le nud racine est traite au premier
passage 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 infixe
parcours Gauche / Racine / Droit : le nud racine est traite apre s le
parcours 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 suffixe
parcours Gauche / Droit / Racine : le nud racine est traite apre s les
parcours 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 en largeur
un parcours est dit en largeur lorsqua partir dun sommet S, les
fre res de S sont explore s avant les fils de S.
ABRRechercher(ELEMENT e, ABR A)
DEBUT
si ABRVide(A) alors
renvoyer FAUX
sinon si e = ValeurRacine(A) alors
renvoyer VRAI
sinon si e < ValeurRacine(A) alors
renvoyer (ABRRechercher(e, ABG(A))
sinon
renvoyer (ABRRechercher(e, ABD(A))
FIN
Complexite : O(Hauteur(A))
2 me thodes principales :
insertion aux feuilles
ajout de chaque e le ment e a une feuille de A
insertion a la racine
Le le ment e devient la nouvelle racine A
ABRInsererFeuille(ELEMENT X, ABR A)
DEBUT
Si ABRVide(A) Alors
e tiquette de A X
ABG(A) ABR_VIDE
ABD(A) ABR_VIDE
Sinon
Si X <= ValeurRacine(A) Alors
ArbreInsererFeuille(X, ABG(A))
Sinon
ArbreInsererFeuille(X, ABD(A))
FIN
Insertion la racine
Le le ment X a ajouter devient la nouvelle racine.
Insertion la racine
2 e tapes
couper larbre en 2 sous-arbres gauche et droit selon les re gles cidessus
G contient tous les e le ments de A X
D contient tous les e le ments de A > X
former un nouvel ABR A avec :
e tiquette de A : X
fils gauche de A : G
fils droit de A : D
Mthodes de coupure
Coupure dun e le ment X dans un ARBRE A
il nest pas ne cessaire de parcourir tous les nuds de A,
seulement les nuds N situe s sur le chemin de recherche de X
dans A
Si nud N X : on ajoute le nud N et ABG(N) dans G
Si nud N > X : on ajoute le nud N et ABD(N) dans D
Exemple de coupure
Soit larbre ci-dessous, on souhaite inse rer le le ment f a la racine de
larbre
Exemple de coupure
N vaut q et N > X car q > f : ajout de N et son fils droit a D
Exemple de coupure
N vaut q et N > X car q > f : ajout de N et son fils droit a D
Exemple de coupure
N vaut q et N > X car q > f : ajout de N et son fils droit a D
Exemple de coupure
N vaut d et N <= X car d <= f : ajout de N et son fils gauche a G
Exemple de coupure
N vaut d et N <= X car d <= f : ajout de N et son fils gauche a G
Exemple de coupure
N vaut d et N <= X car d <= f : ajout de N et son fils gauche a G
Exemple de coupure
N vaut i et N > X car i > f : ajout de N et son fils droit a D
Exemple de coupure
N vaut i et N > X car i > f : ajout de N et son fils droit a D
Exemple de coupure
N vaut i et N > X car i > f : ajout de N et son fils droit a D
Exemple de coupure
N vaut e et N <= X car e <= f : ajout de N et son fils gauche a G
Exemple de coupure
N vaut e et N <= X car e <= f : ajout de N et son fils gauche a G
Exemple de coupure
N vaut e et N > X car g > f : ajout de N et son fils droit a D
Exemple de coupure
N vaut e et N > X car g > f : ajout de N et son fils droit a D
Exemple de coupure
N vaut e et N > X car g > f : ajout de N et son fils droit a D
Procdure de coupure
Coupure de A en 2 ABR G et D
Coupure (ELEMENT X, ABR A, ABR G , ABR D )
De but
Si ABRVide(A) ALORS
G ABR_VIDE
D ABR_VIDE
SINON
SI X <= ValeurRacine(A) ALORS
DA
Coupure ( X, ABG(A) , G, ABG(D) )
SINON
GA
Coupure ( X, ABD(A) , ABD(G) , D)
FSI
FSI
Fin
Insertion la racine
Ajout dun e le ment X a la racine de larbre A
ABRInsererRacine(ELEMENT X, ABR A)
ABR R
De but
e tiquette de R X
ABG(R) ABR_VIDE
ABD(R) ) ABR_VIDE
Coupure (X, A, ABG(R) , ABD(R) )
AR
Fin
remplacer X par le le ment qui lui est imme diatement infe rieur : le MAX
dans ABG(N)
remplacer X par le le ment qui lui est imme diatement supe rieur : le MIN
dans ABD(N)
3. N a 2 fils : 2 solutions
remplacer X par le le ment qui lui est imme diatement infe rieur : le MAX
dans ABG(N) :
on cre e une fonction qui renvoie et supprime le MAX dun ABR, cest-a -dire l
e le ment le plus a droite.
ELEMENT SupprimerMax (ABR A)
De but
SI ABRVide(ABD(A)) ALORS
ELEMENT racine ValeurRacine(A)
A ABG(A)
renvoyer racine
SINON
SupprimerMax (ABD(A) )
FINSI
Fin
Mesure de complexite
parcours dune branche : complexite dans le pire des cas en O(h) = O(log
(n))
Objectif