En informatique théorique, les arbres AVL ont été historiquement les premiers arbres binaires de recherche automatiquement équilibrés. Dans un arbre AVL, les hauteurs des deux sous-arbres d'un même nœud diffèrent au plus de un. La recherche, l'insertion et la suppression sont toutes en dans le pire des cas. L'insertion et la suppression nécessitent d'effectuer des rotations.

Arbre AVL
Découvreurs ou inventeurs
Date de découverte
Problème lié
Complexité en temps
Pire cas
[1], [1], [1]Voir et modifier les données sur Wikidata
Moyenne
[1], [1], [1]Voir et modifier les données sur Wikidata
Complexité en espace
Pire cas
Voir et modifier les données sur Wikidata
Moyenne
Voir et modifier les données sur Wikidata
Un exemple d'arbre binaire de recherche non-AVL.

La dénomination « arbre AVL » provient des noms respectifs de ses deux inventeurs, respectivement Guéorgui Adelson-Velski et Ievgueni Landis, qui l'ont publié en 1962 sous le titre An Algorithm for the Organization of Information[2].

Le facteur d'équilibrage d'un nœud est la différence entre la hauteur de son sous-arbre droit et celle de son sous-arbre gauche. Un nœud dont le facteur d'équilibrage est 1, 0, ou -1 est considéré comme équilibré. Un nœud avec tout autre facteur est considéré comme déséquilibré et requiert un rééquilibrage. Le facteur d'équilibrage est soit calculé à partir des hauteurs respectives des sous-arbres, soit stocké dans chaque nœud de l'arbre (ce qui permet un gain de place, ce facteur pouvant être stocké sur deux bits, mais complexifie les opérations d'insertion et de suppression).

Le même arbre de recherche après un rééquilibrage, maintenant AVL.

Opérations

modifier

Les opérations de base d'un arbre AVL mettent en œuvre généralement les mêmes algorithmes que pour un arbre binaire de recherche, à ceci près qu'il faut ajouter des rotations de rééquilibrage nommées « rotations AVL ».

Insertion

modifier

L'insertion d'un nœud dans un arbre AVL se déroule en deux étapes : tout d'abord, on insère le nœud exactement de la même manière que dans un arbre binaire de recherche ; puis on remonte vers la racine depuis le nœud inséré en corrigeant les facteurs d'équilibrage, si la différence de hauteur est ≤ 1 (en valeur absolue), ou en effectuant une rotation simple ou double (= 2 rotations simples connexes), si la différence de hauteur est plus élevée que 1. La hauteur h de l'arbre étant en  , et les rotations ayant un coût constant, l'insertion se fait finalement en  .

Pour chaque insertion, il sera nécessaire de procéder à 0 ou 1 rotation simple ou double.

Suppression

modifier

La suppression dans un arbre AVL peut se faire par rotations successives du nœud à supprimer jusqu'à une feuille (en adaptant les facteurs d'équilibrage ou, si ce n'est pas possible, en choisissant ces rotations de sorte que l'arbre reste équilibré), et ensuite en supprimant cette feuille directement. La suppression se fait aussi en  .

Pour chaque suppression, il sera nécessaire de procéder de 0 à h rotations, où h est la hauteur de l'arbre.

Recherche

modifier

La recherche dans un arbre AVL se déroule exactement de la même manière que pour un arbre binaire de recherche, et comme la hauteur d'un arbre AVL est en  , elle se fait donc en  . Contrairement à ce qui se passe pour les arbres splay, la recherche ne modifie pas la structure de l'arbre.

Hauteur

modifier

Dans un arbre AVL de hauteur h, dans le pire des cas, en supposant que l'arbre est déséquilibré vers la gauche, le sous-arbre de gauche aura une hauteur de h - 1, tandis que le sous-arbre de droite aura une hauteur de h - 2. Ceci donne une formule par récurrence pour connaître la taille minimale   d'un arbre AVL de hauteur h. Cette formule de récurrence est proche de la définition par récurrence des nombres de Fibonacci :  . D'où une estimation asymptotique pour   de    est le nombre d'or.

À cause de la propriété d'équilibre des sous-arbres des AVL, la hauteur maximale   d'un AVL avec   nœuds internes est liée à la taille minimale d'un AVL de hauteur  . La hauteur maximale est inférieure à[3],[4]  .

Cela donne une formule pour calculer la hauteur, dans le pire des cas, pour un arbre AVL contenant n nœuds internes.

Cette grandeur est meilleure que pour les arbres rouges et noirs, où on a[3],[5]  .

Notes et références

modifier
  1. a b c d e et f « https://web.archive.org/web/20190731124716/https://pages.cs.wisc.edu/~ealexand/cs367/NOTES/AVL-Trees/index.html »
  2. (en) G. Adelson-Velskii et E. M. Landis, An Algorithm for the Organization of Information. Soviet Mathematics Doklady, 3:1259–1263, 1962.
  3. a et b Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest et Clifford Stein, Introduction à l'algorithmique, Dunod, 2002 [détail de l’édition], annexe B.
  4. (en) Theodore Norvell, [PDF] « Application: AVL trees and the golden ratio », Discrete Math. for Engineering, Memorial University, 2004.
  5. Pour des informations sur la taille, on pourra aussi consulter la page web (en) http://www.dyalog.dk/dfnsdws/n_avl.htm.

Sources

modifier
  • Danièle Beauquier, Jean Berstel, Philippe Chrétienne : Éléments d’algorithmique. Masson, 1992. (ISBN 2-225-82704-4) Voir en particulier le chapitre 6 sur les « arbres et ensembles ordonnés ».
  • (en) Donald Knuth : The Art of Computer Programming, volume 3 : « Sorting and Searching », 3e édition. Addison-Wesley, 1997. (ISBN 0-201-89685-0) Voir en particulier les pages 458 à 475 de la section 6.2.3 : « Balanced Trees », expression qui désigne les arbres AVL chez Knuth.

Articles additionnels

modifier
  • Jeremy Chizewer, Stephen Melczer, J. Ian Munro et Ava Pun, « Succinct encodings of binary trees with application to AVL trees », Theoretical Computer Science, vol. 1056,‎ 21 novembre 2025, article no 115537 (DOI 10.1016/j.tcs.2025.115537, lire en ligne)

Voir aussi

modifier

Articles connexes

modifier

📚 Artikel Terkait di Wikipedia

Arbre de Calkin-Wilf

« Calkin–Wilf Tree », sur MathWorld (en) Eric W. Weisstein, « Stern's Diatomic Series », sur MathWorld Alexander Bogomolny, « Fractions on a Binary Tree II »,

Arbre B

l’arbre B*+ (en) (qui combine les arbres B+ et B*). (en) Rudolf Bayer, Binary B-Trees for Virtual Memory, ACM-SIGFIDET Workshop 1971, San Diego, California

Microsoft FrontPage

get Microsoft Expression Studio - Microsoft Expression Web - Microsoft SharePoint Designer OpenOffice.org Writer/Web Microsoft Expression Portail de l’informatique

Google (moteur de recherche)

plus de pages web possible une expression à un site web donné, de sorte qu'une recherche Google sur cette expression remonte le site en question dans

Automate à jetons

in a tree ») parce que « dans un arbre binaire, quand tous les nœuds ont la même étiquette, tous les nœuds se ressemblent » (« in a binary tree of which

Test du canard

1080/0163660X.2011.588169, lire en ligne [PDF]) : « Blithe generalizations, binary thinking, and fear-mongering […] concomitant failure to make […] differentiations

Arbre de défaillances

également appelé « événement redouté ». L'arbre de défaillances (Fault Tree ou « FT » en anglais) est un outil graphique très utilisé dans les études

Liste de publications importantes en informatique

1970. Ce document présente le modèle relationnel des bases de données. Binary B-Trees for Virtual Memory, Rudolf Bayer, ACM-SIGFIDET Workshop 1971, San Diego