Rechercher et insérer une clé dans un arbre binaire de recherche
- Fiche de cours
- Quiz et exercices
- Vidéos et podcasts
- Connaitre l’algorithme de recherche d’une clé dans un arbre binaire de recherche et savoir le programmer en Python.
- Connaitre l’algorithme d’insertion d’une clé dans un arbre binaire de recherche et savoir le programmer en Python.
- La recherche d’une clé dans un arbre binaire de recherche consiste à comparer les nœuds et la clé et, à chaque fois, à rechercher dans le sous-arbre gauche ou le sous-arbre droit, selon que la clé est plus petite ou plus grande que le nœud.
- L’insertion d’une clé dans un arbre binaire de recherche consiste à parcourir l’arbre et à placer la clé là où la recherche s’est arrêtée.
- Comprendre la structure d’un arbre binaire de recherche.
- Utiliser Python dans les arbres binaires de recherche.
La recherche s’arrête quand on trouve la clé dans l’arbre ou quand on a atteint une feuille.
- Si la clé est inférieure à la racine de l’arbre, on recherche dans le sous-arbre gauche.
- Si la clé est supérieure à la racine de l’arbre, on recherche dans le sous-arbre droit.
On considère l’arbre binaire de recherche suivant.
- On compare la racine et la clé :
7 < 8.
Donc on cherche dans le sous-arbre droit. - On compare la racine du sous-arbre droit et la
clé : 9 > 8.
Donc on cherche dans son sous-arbre gauche. - On compare la racine du sous-arbre gauche du sous-arbre droit et la clé : 8 = 8. La clé 8 est trouvée !
On recherche maintenant la clé 6 dans cet arbre.
- On compare la racine et la clé :
7 > 6.
Donc on cherche dans le sous-arbre gauche. - On compare la racine du sous-arbre gauche et la
clé : 4 < 6.
Donc on cherche dans son sous-arbre droit. - On compare la racine du sous-arbre droit du
sous-arbre gauche et la clé :
5 < 6.
Or 5 est une feuille. La clé 6 n’est donc pas dans l’arbre.
Voici ci-dessous un algorithme de la fonction récursive de recherche d’une clé dans un arbre binaire de recherche a.
Algorithme | Explication |
Fonction recherche(ABR a, cle): | On définit la fonction recherche qui prend pour paramètres un arbre binaire de recherche a de type ABR et une clé cle. |
Si est_vide(a), alors retourner Faux |
Si a est vide, alors on retourne Faux. |
Autrement si racine(a) = cle, alors retourner Vrai |
Si la cle est égale à la racine de a, alors on retourne Vrai. |
Sinon | Sinon |
Si racine(a) < cle , alors retourner recherche(sad(a), cle) |
si la racine de a est inférieure à la cle, on recherche dans le sous-arbre droit de a. |
Sinon, retourner recherche(sag(a), cle) |
Sinon on recherche dans le sous-arbre gauche de a. |
FinSi | Fin de l’instruction conditionnelle. |
FinSi | Fin de l’instruction conditionnelle. |
En Python, la fonction recherche(arbre, cle) implémente la recherche de l’élément cle dans l’arbre binaire de recherche arbre.
Python | Explication |
def recherche(arbre, cle): | On définit la fonction recherche. |
if arbre.est_vide(): return False |
Si arbre est vide, on retourne False. |
elif arbre.etiquette == cle: return True |
Autrement, si l’étiquette de la racine de l’arbre arbre est égale à cle, on retourne True. |
else: | Sinon |
if arbre.etiquette < cle: return recherche(arbre.sad, cle) |
si l’étiquette de arbre est inférieure
à cle,
on retourne recherche (arbre.sad, cle). |
else: return recherche(arbre.sag, cle) |
Sinon on retourne recherche (arbre.sag, cle). |
On considère à nouveau l’arbre binaire de recherche suivant.
Voici la fonction précédente testée avec cet arbre sur Python Tutor.
Ces lignes de code permettent de définir la fonction recherche.
On pourra ainsi l’utiliser sur l’arbre étudié : print(recherche(a, 8)) renverra True, donc 8 est bien dans l’arbre. Également, print(recherche(a, 6)) renverra False, donc 6 n’est pas dans l’arbre.
On crée ensuite, avec la clé, un nouveau nœud à l’endroit où la recherche s’est arrêtée.
On considère l’arbre binaire de recherche suivant.
- On compare la racine et la clé :
7 > 6.
Donc on parcourt le sous-arbre gauche du nœud 7. - On compare la racine du sous-arbre gauche et la
clé : 4 > 6.
Donc on parcourt le sous-arbre droit du nœud 4. - On compare la racine du sous-arbre droit du
nœud 4 et la clé : 5 > 6.
Or 5 est une feuille. La clé 6 sera donc l’étiquette du sous-arbre droit du nœud 5.
Voici ci-dessous un algorithme de la fonction récursive d’insertion d’une clé dans un arbre binaire de recherche a.
Algorithme | Explication |
Fonction insertion(ABR a, cle): | On définit la fonction insertion qui prend pour paramètres un arbre binaire de recherche a de type ABR et une clé cle. |
Si est_vide(a), alors racine(a) = cle |
Si a est vide, alors cle sera la racine de cle. |
Sinon | Sinon |
Si racine(a) < cle, alors | si la racine de a est inférieure à la cle, |
Si est_vide(sad(a)), alors racine(sad(a)) = cle |
si le sous-arbre droit de a est vide, alors cle sera la racine du sous-arbre droit de a. |
Sinon, retourner insertion(sad(a), cle) |
sinon on insère cle dans le sous-arbre droit de a. |
FinSi | Fin de l’instruction conditionnelle. |
Autrement si racine(a) > cle, alors | si la racine de a est supérieure à la cle, |
Si est_vide(sag(a)), alors racine(sag(a)) = cle |
si le sous-arbre gauche de a est vide, alors cle sera la racine du sous-arbre gauche de a. |
Sinon, retourner insertion(sag(a), cle) |
sinon on insère cle dans le sous-arbre gauche de a |
FinSi | Fin de l’instruction conditionnelle. |
Sinon, la clé est déjà dans l’arbre | |
FinSi | Fin de l’instruction conditionnelle. |
FinSi | Fin de l’instruction conditionnelle. |
En Python, la fonction insertion(arbre, cle) implémente l’insertion de l’élément cle dans l’arbre binaire de recherche arbre.
Python | Explication |
def insertion(arbre, cle): | On définit la fonction insertion. |
if arbre.est_vide(): arbre.etiquette = cle |
Si arbre est vide, on lui attribue cle comme étiquette. |
else: | Sinon |
if arbre.etiquette < cle: | si l’étiquette de arbre est inférieure à cle, |
if arbre.sad.est_vide(): arbre.sad.etiquette = cle |
si le sous-arbre droit de arbre est vide, on lui attribue cle comme étiquette. |
else: return insertion(arbre.sad, cle) |
sinon on insère l’élément cle dans le sous-arbre droit de arbre. |
elif arbre.etiquette > cle: | autrement, si l’étiquette de arbre est supérieure à cle, |
if arbre.sag.est_vide(): arbre.sag.etiquette = cle |
si le sous-arbre gauche de arbre est vide, on lui attribue cle comme étiquette. |
else: return insertion(arbre.sag, cle) |
sinon on insère l’élément cle dans le sous-arbre gauche de arbre. |
else: return “la clé est déjà présente dans l’arbre.” |
Sinon on retourne le message |
On considère à nouveau l’arbre binaire de recherche suivant.
Voici la fonction précédente testée avec cet arbre sur Python Tutor.
a.sag.sad.sad.etiquette renvoie 6. La clé 6 a bien été insérée.
Des quiz et exercices pour mieux assimiler sa leçon
La plateforme de soutien scolaire en ligne myMaxicours propose des quiz et exercices en accompagnement de chaque fiche de cours. Les exercices permettent de vérifier si la leçon est bien comprise ou s’il reste encore des notions à revoir.
Des exercices variés pour ne pas s’ennuyer
Les exercices se déclinent sous toutes leurs formes sur myMaxicours ! Selon la matière et la classe étudiées, retrouvez des dictées, des mots à relier ou encore des phrases à compléter, mais aussi des textes à trous et bien d’autres formats !
Dans les classes de primaire, l’accent est mis sur des exercices illustrés très ludiques pour motiver les plus jeunes.
Des quiz pour une évaluation en direct
Les quiz et exercices permettent d’avoir un retour immédiat sur la bonne compréhension du cours. Une fois toutes les réponses communiquées, le résultat s’affiche à l’écran et permet à l’élève de se situer immédiatement.
myMaxicours offre des solutions efficaces de révision grâce aux fiches de cours et aux exercices associés. L’élève se rassure pour le prochain examen en testant ses connaissances au préalable.
Des vidéos et des podcasts pour apprendre différemment
Certains élèves ont une mémoire visuelle quand d’autres ont plutôt une mémoire auditive. myMaxicours s’adapte à tous les enfants et adolescents pour leur proposer un apprentissage serein et efficace.
Découvrez de nombreuses vidéos et podcasts en complément des fiches de cours et des exercices pour une année scolaire au top !
Des podcasts pour les révisions
La plateforme de soutien scolaire en ligne myMaxicours propose des podcasts de révision pour toutes les classes à examen : troisième, première et terminale.
Les ados peuvent écouter les différents cours afin de mieux les mémoriser en préparation de leurs examens. Des fiches de cours de différentes matières sont disponibles en podcasts ainsi qu’une préparation au grand oral avec de nombreux conseils pratiques.
Des vidéos de cours pour comprendre en image
Des vidéos de cours illustrent les notions principales à retenir et complètent les fiches de cours. De quoi réviser sa prochaine évaluation ou son prochain examen en toute confiance !