Fiche de cours

Rechercher et insérer une clé dans un arbre binaire de recherche

Lycée   >   Terminale   >   NSI   >   Rechercher et insérer une clé dans un arbre binaire de recherche

  • Fiche de cours
  • Quiz et exercices
  • Vidéos et podcasts
Objectifs
  • 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.
Points clés
  • 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.
Pour bien comprendre
  • Comprendre la structure d’un arbre binaire de recherche.
  • Utiliser Python dans les arbres binaires de recherche.
1. Rechercher une clé dans un arbre binaire de recherche
a. Principe
La recherche d’une clé dans un arbre binaire de recherche non vide consiste à comparer la clé et la racine, puis, si elles sont différentes, à descendre dans le sous-arbre gauche ou le sous-arbre droit selon que la clé est plus petite ou plus grande que la racine.

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.
Exemple
On considère l’arbre binaire de recherche suivant.

On recherche la clé 8 dans cet arbre.
  • 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.
b. Algorithme

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.
c. Programmation

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).
Exemple
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.

2. Insérer une clé dans un arbre binaire de recherche
a. Principe
L’insertion d’une clé dans un arbre binaire de recherche non vide consiste à parcourir l’arbre comme pour rechercher une clé.

On crée ensuite, avec la clé, un nouveau nœud à l’endroit où la recherche s’est arrêtée.
Exemple
On considère l’arbre binaire de recherche suivant.

On veut insérer la clé 6 dans cet arbre, on réalise donc les comparaisons suivantes.
  • 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.
On obtient ainsi l’arbre suivant.

b. Algorithme

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.
c. Programmation

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
“la clé est déjà présente dans l’arbre.”

Exemple
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.

Évalue ce cours !

 

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.

S’abonner

 

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.

S’abonner

 

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.

S’abonner

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 !

S’abonner

 

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.

S’abonner

 

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 !

S’abonner

Découvrez le soutien scolaire en ligne avec myMaxicours

Plongez dans l'univers de myMaxicours et découvrez une approche innovante du soutien scolaire en ligne, conçue pour captiver et éduquer les élèves de CP à la terminale. Notre plateforme se distingue par une riche sélection de contenus interactifs et ludiques, élaborés pour stimuler la concentration et la motivation à travers des parcours d'apprentissage adaptés à chaque tranche d'âge. Chez myMaxicours, nous croyons en une éducation où chaque élève trouve sa place, progresse à son rythme et développe sa confiance en soi dans un environnement bienveillant.

Profitez d'un accès direct à nos Profs en ligne pour une assistance personnalisée, ou explorez nos exercices et corrigés pour renforcer vos connaissances. Notre assistance scolaire en ligne est conçue pour vous accompagner à chaque étape de votre parcours éducatif, tandis que nos vidéos et fiches de cours offrent des explications claires et concises sur une multitude de sujets. Avec myMaxicours, avancez sereinement sur le chemin de la réussite scolaire, armé des meilleurs outils et du soutien de professionnels dédiés à votre épanouissement académique.

Fiches de cours les plus recherchées

NSI

Parcourir un arbre binaire

NSI

Se déplacer dans un graphe

NSI

Utiliser la méthode « diviser pour régner »

NSI

Programmer de manière dynamique

NSI

Étudier la complexité mémorielle

NSI

Rechercher un motif dans un texte : l'algorithme de Boyer-Moore

NSI

Comprendre les requêtes HTTP et la réponse serveur

NSI

Comprendre la notion de réseau et de protocole

NSI

Comprendre les protocoles de la couche physique

NSI

Comprendre les protocoles de la couche liaison dans un réseau local

NSI

Comprendre les protocoles de la couche réseau

NSI

Comprendre les protocoles de la couche transport

NSI

Décrire des protocoles de récupération de paquets

NSI

Affecter une valeur, utiliser une séquence d'actions

NSI

Utiliser des structures conditionnelles

NSI

Utiliser des boucles