Numérique et Sciences Informatiques > Algorithmique : Structures de Données Avancées > Arbres Binaires > Arbres binaires de recherche (insertion, recherche)
Arbres Binaires de Recherche : Insertion et Recherche
Comprendre le fonctionnement des arbres binaires de recherche, incluant les algorithmes d'insertion et de recherche. Ce cours est destiné aux élèves de lycée en spécialité NSI.
Introduction aux Arbres Binaires de Recherche
Un arbre binaire de recherche (ABR) est une structure de données arborescente où chaque nœud a au plus deux enfants, appelés enfant gauche et enfant droit. La propriété fondamentale d'un ABR est que, pour chaque nœud:
Cette propriété permet une recherche efficace des éléments, car elle élimine la nécessité d'explorer des parties entières de l'arbre.
Insertion dans un Arbre Binaire de Recherche
L'insertion d'un nouvel élément dans un ABR maintient l'ordre de recherche. Voici l'algorithme d'insertion :
Exemple:
Considérons un ABR initialement vide. Insérons les valeurs suivantes dans l'ordre : 5, 3, 7, 2, 4, 6, 8.
Il est crucial de comprendre que l'ordre d'insertion influence la structure de l'arbre. Un ordre d'insertion malheureux (par exemple, une séquence croissante) peut conduire à un arbre dégénéré qui ressemble à une liste chaînée, compromettant l'efficacité de la recherche.
Recherche dans un Arbre Binaire de Recherche
La recherche dans un ABR exploite la propriété d'ordre pour trouver un élément rapidement. Voici l'algorithme de recherche :
Exemple:
Dans l'ABR construit dans l'exemple précédent, recherchons la valeur 4.
Si on recherchait la valeur 9, on aurait suivi le chemin racine (5) -> enfant droit (7) -> enfant droit (8) et finalement atteint un nœud vide, indiquant que 9 n'est pas présent dans l'arbre.
Complexité temporelle
La complexité temporelle des opérations d'insertion et de recherche dans un ABR dépend de la forme de l'arbre.
Il est donc important d'utiliser des techniques d'équilibrage d'arbres (comme les arbres AVL ou les arbres rouge-noir) pour garantir une complexité de O(log n) même dans le pire des cas.
Ce qu'il faut retenir
FAQ
-
Qu'est-ce qui se passe si j'insère des valeurs en ordre croissant dans un arbre binaire de recherche ?
Si vous insérez des valeurs en ordre croissant, l'arbre dégénérera en une structure similaire à une liste chaînée, où chaque nœud a seulement un enfant droit. Cela rendra la recherche inefficace, avec une complexité de O(n) au lieu de O(log n). -
Comment puis-je m'assurer que mon arbre binaire de recherche reste équilibré ?
Vous pouvez utiliser des algorithmes d'équilibrage d'arbres tels que l'algorithme AVL ou l'algorithme des arbres rouge-noir. Ces algorithmes effectuent des rotations de nœuds pour maintenir l'arbre équilibré après chaque insertion ou suppression. -
Pourquoi les arbres binaires de recherche sont-ils préférés aux listes chaînées ou aux tableaux pour la recherche ?
Dans le meilleur des cas, les arbres binaires de recherche offrent une complexité temporelle de O(log n) pour la recherche, l'insertion et la suppression, ce qui est plus efficace que les listes chaînées (O(n) pour la recherche et la suppression) et les tableaux non triés (O(n) pour la recherche) pour les grandes quantités de données. Les tableaux triés offrent une recherche rapide (O(log n)) mais l'insertion et la suppression sont coûteuses (O(n)).