Académique Documents
Professionnel Documents
Culture Documents
b- Parcours en Largeur
Principe : Developper d'abord les voisins d'un sommet
avant de continuer en profondeur
Arbres binaires
Les arbres binaires se decrivent plus aisement de
maniere recursive. Un arbre binaire T est une structure
definie sur un ensemble fini de nœuds et qui pour
chaque nœud est forme de trois ensembles disjoints de
nœuds :
. une racine,
. un arbre binaire (appele son sous-arbre gauche)
. un arbre binaire (appele son sous-arbre droit).
13
9
7 11 14
6 12 15
Arbre binaire de recherche
13
9
7 11 14
6 12 15
Ce n'est pas un arbre binaire de recherche
Recherche d'un element dans un arbre binaire
quelconque
boolean recherche (arbre A, element a rechercher x)
{
si vide(A) alors retourner faux
sinon si valeur(A)=x alors retourner vrai
sinon
si recherche(Droit(A),x) retourner vrai
sinon retourner recherche (Gauche(A), x)
}
Avant insertion
50
30
25 35 70
60 80
Apres insertion
50
30
25 35 70
60 80
27
Exercices :
Complexite
Si h est la hauteur de l’arbre , on peut aisement
montrer que tous les algorithmes precedents ont une
complexite en O(h). Malheureusement, un arbre
binaire quelconque a n nœuds a une hauteur comprise,
en ordre de grandeur, entre log2 n et n. L'arbre de
recherche « ideal » pour lequel une recherche
necessite au pire log2n comparaisons est un arbre
equilibre : (pour chaque noeud x, les sous arbres
gauche et droit de x ont sensiblement meme hauteur)
Rotation Droite
q p
p w devient u q
u v v w
Rotation Gauche
p q
u q devient p w
v w u v
Rotation Gauche-Droite
r q
p w p r
t q devient t u v w
u v
Rotation Droite_Gauche
r q
t p devient r p
q w t u v w
u v
Algorithmes des 4 rotations.
// Rotation Gauche
procedure RG(arbre a)
{
arbre b ;
b=a->droit ;
a->droit=b->gauche ;
b->gauche=a ;
a=b ;
}
// Rotation Droite
procedure RD(arbre a)
{
arbre b ;
b=a->gauche ;
a->gauche=b->droit ;
b->droit=a ;
a=b ;
}
// Rotation Gauche-Droite
procedure RGD(arbre a)
{
RG(a->gauche) ;
RD(a) ;
}
// Rotation droite_Gauche
procedure RDG(arbre a)
{
RD(a->droit) ;
RG(a) ;
}
Les Arbres AVL
Exemples
12
4 10 14
2 6
12
1
Principe d'insertion dans un arbre AVL
Sinon
{
Si h(Ndd)>h(Ndg) alors RG(N)
sinon RD(Nd) puis RG(N)
}
}
}
Exercice : Construire l'arbre AVL correspondant a
l'insertion des elements suivants dans l'ordre.