Les arbres binaires de recherche
Un arbre binaire de recherche équilibré de 1023 clés trouve n'importe laquelle en 10 comparaisons au plus ; construit à partir d'une entrée triée, les mêmes clés peuvent en demander 1023.
La recherche dichotomique, inscrite dans la forme
La recherche dichotomique dans un tableau trié trouve une clé en environ log₂ n vérifications, mais insérer dans un tableau trié déplace des valeurs. Une table de hachage insère rapidement, mais elle oublie l'ordre : elle ne peut pas facilement donner la plus petite clé ni la clé suivant 40. Un arbre binaire de recherche (ABR) vise les deux. Il est fait de nœuds, comme une liste chaînée, mais chaque nœud a deux pointeurs, left et right. Le nœud du haut est la racine ; un nœud sans enfants est une feuille.
Une seule règle en fait un arbre de recherche : pour chaque nœud, toutes les clés de son sous-arbre gauche sont plus petites, et toutes les clés de son sous-arbre droit sont plus grandes. Pour chercher une clé, on part de la racine et on compare. Égale : trouvée. Plus petite : on va à gauche ; plus grande : on va à droite. Chaque comparaison écarte tout un sous-arbre, comme la recherche dichotomique écarte la moitié de la liste. Chercher 60 dans l'arbre 50, 30, 70, 20, 40, 60, 80 compare avec 50, puis 70, puis 60 : 3 comparaisons.
L'insertion suit le même chemin. On va à gauche ou à droite jusqu'à ce que le pointeur voulu soit vide, et on y accroche le nouveau nœud. Insérer 45 compare avec 50 (à gauche), 30 (à droite) et 40 (à droite) ; 40 n'a pas d'enfant droit, donc 45 le devient. Supprimer un nœud qui n'est pas une feuille demande une idée de plus : les notes du MIT échangent son élément avec la clé suivante ou précédente dans l'ordre et suppriment à cet endroit à la place. La règle de comptage du labo est une comparaison par nœud du chemin.
Fais glisser pour tourner. Fais défiler ou pince pour zoomer.
La hauteur fait tout
Combien de comparaisons une recherche peut-elle demander ? Au plus une par niveau : le coût dépend donc de la hauteur de l'arbre, le nombre d'arêtes du plus long chemin de la racine jusqu'à une feuille. Les notes du MIT le disent ainsi : les opérations sur l'arbre s'exécutent en temps O(h). L'arbre 50, 30, 70, 20, 40, 60, 80 a une hauteur de 2 : aucune recherche ne demande donc plus de 3 comparaisons. Un arbre parfaitement équilibré de 1023 nœuds a une hauteur de 9 et demande au plus 10 comparaisons.
Mais la forme dépend de l'ordre d'insertion. Insère 10, 20, 30, 40, 50, 60, 70 dans l'ordre croissant : chaque clé est plus grande que toutes les précédentes, donc chaque nouveau nœud va à droite du dernier. L'arbre devient une chaîne de hauteur 6, et chercher 70 demande 7 comparaisons : une liste chaînée avec des pointeurs en trop. Avec 1023 clés triées, la pire recherche demande 1023 comparaisons au lieu de 10.
Les arbres équilibrés corrigent cela en se réorganisant après chaque insertion ou suppression. Le premier modèle a été l'arbre AVL, de Georgy Adelson-Velsky et Evgenii Landis en 1962, que traite le cours 7 du MIT. Il maintient, à chaque nœud, un écart d'au plus 1 entre les hauteurs des deux sous-arbres, et répare tout déséquilibre par de petits mouvements locaux appelés rotations. La hauteur reste ainsi en O(log n) : recherche, insertion et suppression restent en O(log n), quel que soit l'ordre d'arrivée des clés.
Les clés dans l'ordre, gratuitement
Un ABR garde plus que l'appartenance. Visite le sous-arbre gauche, puis le nœud, puis le sous-arbre droit, de façon récursive, et les clés sortent dans l'ordre croissant. Ce parcours infixe (le MIT l'appelle ordre de parcours) permet à un ABR de répondre à « plus petite clé », « plus grande clé » et « clé suivant 40 », les opérations d'ordre de l'interface d'ensemble du MIT qu'une table de hachage ne sait pas faire rapidement.
| Racine et feuille | La racine est le nœud du haut ; une feuille n'a pas d'enfants. |
| Propriété d'ABR | À chaque nœud, les clés du sous-arbre gauche sont plus petites et celles du sous-arbre droit plus grandes. |
| Hauteur | Les arêtes du plus long chemin de la racine à une feuille. Une recherche demande au plus hauteur + 1 comparaisons. |
| Arbre AVL | Un ABR équilibré (1962) : les hauteurs des sous-arbres diffèrent d'au plus 1, corrigées par des rotations. |
| Parcours infixe | Gauche, nœud, droite : liste les clés dans l'ordre croissant. |
- Quelle affirmation est la propriété d'arbre binaire de recherche ?
- Chaque nœud a exactement deux enfants
- À chaque nœud, les clés du sous-arbre gauche sont plus petites et celles du sous-arbre droit plus grandes
- Les clés sont stockées dans l'ordre d'insertion
- La racine est la plus petite clé
- Arbre construit à partir de 50, 30, 70, 20, 40, 60, 80. Combien de comparaisons demande la recherche de 60 ?
- Même arbre : la recherche de 45, qui est absent, demande combien de comparaisons ?
- Insère 45 dans cet arbre. Où va-t-il ?
- Enfant gauche de 50
- Enfant droit de 40
- Enfant gauche de 60
- Enfant droit de 30
- Quelle est la hauteur de l'arbre 50, 30, 70, 20, 40, 60, 80 ?
- Insère 10, 20, 30, 40, 50, 60, 70 dans cet ordre. Combien de comparaisons demande la recherche de 70 ?
- Un ABR parfaitement équilibré a 1023 nœuds (hauteur 9). Combien de comparaisons une recherche peut-elle demander au maximum ?
- Range les clés de l'arbre 50, 30, 70, 20, 40 dans l'ordre où un parcours infixe les visite.
- Qui a proposé le premier modèle d'arbre équilibré, et quand ?
- Adelson-Velsky et Landis, 1962
- Luhn, 1953
- Bauer et Samelson, 1957
- Knuth, 1998
- À quelle question un ABR peut-il répondre rapidement, mais pas une simple table de hachage ?
- 40 est-il stocké ?
- Quelle est la clé suivant 40 ?
- Combien y a-t-il d'alvéoles ?
- Combien vaut 40 mod 7 ?
- Dans un ABR, à chaque nœud, les clés plus petites vont à gauche et les plus grandes à droite.
- Recherche et insertion suivent un seul chemin : au plus hauteur + 1 comparaisons.
- Une entrée triée donne une chaîne (7 clés, hauteur 6) ; les arbres équilibrés comme l'AVL (1962) maintiennent une hauteur en O(log n).
- Un parcours infixe liste les clés dans l'ordre croissant.
Sources de ce cours (11)
- MIT OpenCourseWare 6.006 Introduction to Algorithms, Spring 2020 (Demaine, Ku, Solomon)
- lecture notes 2 Data Structures (interface vs data structure, Sequence and Set interfaces, stack = insert_last/delete_last, queue = insert_last/delete_first, array, linked list, dynamic array, amortized Θ(1) append)
- 4 Hashing (chaining, pigeonhole collisions, chain length n/m)
- 6 Binary Trees Part 1 (height, traversal order, O(h) operations) and 7 Binary Trees Part 2: AVL (Adelson-Velsky and Landis, 1962) at ocw.mit.edu/courses/6-006-introduction-to-algorithms-spring-2020/pages/lecture-notes
- MDN Web Docs, Array.prototype.shift (shifts all values left by 1)
- Array.prototype.unshift, Map (insertion order, Map vs Object, spec requires sublinear average access) and Set (developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects)
- ECMAScript 2025 Language Specification (tc39.es/ecma262)
- 24.1 Map Objects and 24.2 Set Objects ("must be implemented using either hash tables or other mechanisms that, on average, provide access times that are sublinear on the number of elements")
- Array.prototype.shift steps (Repeat, while k < len: move element k to k - 1)
- D. E. Knuth, The Art of Computer Programming vol. 3 (2nd ed. 1998) section 6.4 History (H. P. Luhn, IBM internal memorandum January 1953, hashing with chaining; digit pairs added mod 10, 31415926 -> 4548) via gwern.net copy, and IEEE Spectrum, "Hans Peter Luhn and the Birth of the Hashing Algorithm" (2018)
- "A brief history of the stack", SIGCIS (sigcis.org/files/A brief history.pdf: Bauer and Samelson applied for the patent in 1957, US 3,047,228 granted July 31, 1962; IPL list processing by Newell, Simon and Shaw at RAND 1956) and Wikipedia, Information Processing Language (Newell, Shaw, Simon, RAND and Carnegie Institute of Technology, about 1956).
Consulté le: 2026-10-18