Vous êtes sur la page 1sur 14

Cours Algorithmique, 2ème partie AS IUT

Cours 5 : Arbres Binaires. Extensions : AVL

Anne Vilnat
http://www.limsi.fr/Individu/anne/coursAlgo
Plan

1 Arbres binaires complets

2 Arbres AVL
Définition d’un Arbre Binaire plein

Définition :
Un arbre binaire plein est un arbre binaire dans lequel :
toutes les feuilles sont au même niveau
tous les sommets intérieurs ont deux fils

Propriétés :

Un arbre binaire plein de hauteur h a :


2h feuilles
2h − 1 sommets intérieurs
Il n’y a qu’un arbre binaire plein d’une hauteur donnée (à
isomorphisme près)
Arbres binaires pleins

Propriété :

Tout arbre binaire de hauteur h est un sous-arbre de l’arbre


plein de hauteur h.
Conséquence : si un arbre binaire est de hauteur h et a n
sommets, on a :
h + 1 ≤ n ≤ 2h+1 − 1

Exercice
Dessiner tous les arbres binaires de taille :
3 (indice : il y en a 5)
4 (indice : il y en a 14)
Définition d’un Arbre Binaire complet

Définition :
Un arbre binaire complet est :
soit un arbre binaire plein
soit devient plein après ajout d’une suite contiguë de sommets
au niveau inférieur à droite

Application naturelle dans un tableau :

racine à l’indice 1
pour tout i,
fils gauche en 2i
fils droit en 2i + 1
correspond à un parcours par niveaux
Exemples d’arbres binaires complets

Un arbre plein :
Un arbre complet :
Dans un tableau :
Un arbre binaire non complet :
Dans un tableau :
Rappel sur les ABR

Complexité et ABR

Complexité de l’insertion et de la recherche :


dans le meilleur des cas : O(logn)
dans le pire des cas : O(n)
Pourquoi ?
meilleur des cas : arbre équilibré et presque plein, donc
h + 1 ≈ log (n + 1)
pire des cas : arbre linéaire, donc n = h + 1
Donc, il faut équilibrer les arbres : arbres AVL
Définition des AVL

Principe

Origine : G.M. Adelson-Velski et E.M. Landis


Idée : en chaque sommet, on mesure l’
equilibre = ht(filsdroit) − ht(filsgauche)
Cette mesure ne peut valoir que 1, -1 ou 0.
Si une insertion aboutit à 2 ou -2, on effectue une rotation
Avantages :
Algorithme d’insertion (complexe mais) facile à implémenter
Garantie de recherche en O(logn)
Exemple de mesure d’équilibre
Algorithme d’insertion

Algo
Si B est un arbre AVL et si on ajoute ou supprime un sommet à B,
alors
si aucun déséquilibre, on a toujours un AVL.
sinon soit x le sommet le plus bas déséquilibré (2 ou -2):
si x a un déséquilibre de -2 et est tel que son fils gauche soit
a un déséquilibre de -1, alors une rotation rd(x,B)
a un déséquilibre de 1, alors une rotation rgd(x,B)
si x a un déséquilibre de 2 et est tel que son fils droit
a un déséquilibre de 1, alors une rotation rg(x,B)
a un déséquilibre de -1, alors une rotation rdg(x,B)
Rotations d’AVL
Insertion dans un AVL
Insertion dans un AVL
Insertion dans un AVL

Vous aimerez peut-être aussi