Fiche de cours

Utiliser Python dans les arbres binaires de recherche

Lycée   >   Terminale   >   NSI   >   Utiliser Python dans les arbres binaires de recherche

  • Fiche de cours
  • Quiz et exercices
  • Vidéos et podcasts
Objectif

Utiliser Python dans les arbres binaires de recherche.

Points clés
  • En Python, l’implémentation d’un arbre binaire de recherche (ABR) nécessite de bien définir la relation d’ordre à utiliser.
  • En Python, on peut utiliser la classe ArbreBinaire pour implémenter (définir) les arbres binaires de recherche.
Pour bien comprendre
  • Comprendre la structure d’un arbre binaire de recherche.
  • Utiliser Python pour déterminer les mesures (taille et hauteur) des arbres binaires.
1. L'implémentation des arbres binaires de recherche en Python
a. Définition d'un arbre binaire de recherche (rappel)
Un arbre binaire de recherche (ou ABR en abrégé) est soit vide, soit c’est un arbre binaire dont les étiquettes sont des éléments d’un ensemble totalement ordonné. On parle ici davantage de clé que d’étiquette.
Un arbre binaire de recherche non vide est défini par 3 propriétés.
  • La clé de la racine est supérieure ou égale à toutes les clés de son sous-arbre gauche.
  • La clé de la racine est inférieure strictement à toutes les clés de son sous-arbre droit.
  • Son sous-arbre gauche et son sous-arbre droit sont eux-même des arbres binaires de recherche.
b. La relation d'ordre
L’utilisation des arbres binaires de recherche (ABR) nécessite d’avoir une relation d’ordre sur les éléments qui composent ces arbres.

Le langage Python implémente nativement les opérateurs de comparaison <> et == pour beaucoup de types. Ces opérateurs fonctionnent ainsi pour les nombres mais également pour les chaines de caractères, les tableaux, etc.
Exemple
Les opérateurs <, > et == permettent de comparer les chaines de caractères suivant l’ordre alphanumérique, en commençant par les nombres entiers puis les lettres.

Par exemple, sur Python, on a le code suivant.       

Python Explication
mot1 = “chat” On attribue à la variable mot1 la chaine de caractères “chat”.
mot2 = “chien” On attribue à la variable mot2 la chaine de caractères “chien”.
mot3 = “araignée” On attribue à la variable mot3 la chaine de caractères “araignée”.
print(mot1 < mot2) True s’affiche
(‘a’ < ‘i’ dans l’ordre alphabétique).
print(mot1 < mot3) False s’affiche
(‘c’ > ‘a’ dans l’ordre alphabétique).
print(mot3 < mot2) True s’affiche
(‘a’ < ‘c’ dans l’ordre alphabétique).
Avant d’implémenter un arbre binaire de recherche en Python, il faut bien définir la relation d’ordre que l’on utilise afin de définir dans quel ordre ranger les éléments dans l’arbre.
c. La classe ArbreBinaire

En Python, la définition d’un arbre binaire de recherche ne nécessite pas forcément la création d’une classe spécifique : la classe ArbreBinaire suffit. S’il existe des algorithmes efficaces de création d’arbres binaires de recherche, ils sont en effet très largement hors programme car assez complexes.

En NSI, l’implémentation d’un arbre binaire de recherche en Python nécessite au préalable une mise en forme sur papier.

Exemple
Créer un arbre binaire de recherche avec les étiquettes 1, 2, 3, 4, 5, 6 n’est pas facile car il y a beaucoup de possibilités.

En voici trois ci-dessous.


Les deux arbres de droite sont dits dégénérés. Pour eux, la structure d’arbre binaire de recherche n’a aucun intérêt puisque les représenter comme une liste ordonnée de nombres reviendrait au même.
2. Chercher le minimum et le maximum dans un arbre binaire de recherche en Python
a. Principe

La recherche du minimum et du maximum dans un arbre binaire de recherche est assez simple.

Le minimum d’un arbre binaire de recherche est situé au nœud le plus à gauche de l’arbre, le maximum est situé au nœud le plus à droite de l’arbre.
Exemple
Si on considère l’arbre binaire de recherche suivant.

  • Le minimum est 1. C’est effectivement le nœud le plus à gauche de l’arbre.
  • Le maximum est 6. C’est effectivement le nœud le plus à droite de l’arbre.
b. Programmation
Recherche du minimum

En Python, la fonction minimum(arbre) implémente la recherche du minimum dans l’arbre binaire de recherche arbre.         

Python Explication
def minimum(arbre): On définit la fonction minimum.
    if arbre.est_vide(): Si l’arbre est vide,
       return “L’arbre est vide.” retourner “L’arbre est vide.”
    else: Si l’arbre n’est pas vide,
       while not arbre.sag.est_vide(): tant que le sous-arbre gauche de l’arbre n’est pas vide,
           arbre = arbre.sag on affecte à la variable arbre son sous-arbre gauche.
       return arbre.etiquette Retourner la clé du dernier sous-arbre gauche non vide.
Recherche du maximum

En Python, la fonction maximum(arbre) implémente la recherche du maximum dans l’arbre binaire de recherche arbre.

Python Explication
def maximum(arbre): On définit la fonction maximum.
    if arbre.est_vide(): Si l’arbre est vide,
        return “L’arbre est vide.” retourner “L’arbre est vide.”
    else: Si l’arbre n’est pas vide,
        while not arbre.sad.est_vide(): tant que le sous-arbre droit de l’arbre n’est pas vide,
            arbre = arbre.sad on affecte à la variable arbre son sous-arbre droit.
        return arbre.etiquette Retourner la clé du dernier sous-arbre droit non vide.
Attention
Ces deux fonctions ont pour précondition d’utiliser un arbre binaire de recherche. Sinon maximum(arbre) renverra juste l’étiquette de son nœud le plus à droite et minimum(arbre)renverra juste l’étiquette de son nœud le plus à gauche.
Exemple
Voici sur Python Tutor l’implémentation de la recherche du minimum et du maximum dans un arbre binaire de recherche.

É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

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

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