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

Utiliser Python dans les arbres binaires de recherche

  • Fiche de cours
  • Quiz
  • Profs en ligne
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.

Comment as-tu trouvé ce cours ?

Évalue ce cours !

 

Question 1/5

La médiane de 6 notes est 13. Cela signifie que :

Question 2/5

On a obtenu la série statistique suivante :

Combien vaut la médiane ?

Question 3/5

On a obtenu la série ci-dessous :

Quelle est la médiane de cette série ?

Question 4/5

On a relevé les tailles en cm des élèves d’une classe :

 

Parmi les propositions suivantes, laquelle est vraie ?

Question 5/5

Les notes en français de deux classes littéraires sont données dans le tableau suivant :

Quelle est la note médiane ?

Vous avez obtenu75%de bonnes réponses !

Recevez l'intégralité des bonnes réponses ainsi que les rappels de cours associés :

Votre adresse e-mail sera exclusivement utilisée pour vous envoyer notre newsletter. Vous pourrez vous désinscrire à tout moment, à travers le lien de désinscription présent dans chaque newsletter. Pour en savoir plus sur la gestion de vos données personnelles et pour exercer vos droits, vous pouvez consulter notre charte.

Une erreur s'est produite, veuillez ré-essayer

Consultez votre boite email, vous y trouverez vos résultats de quiz!

Découvrez le soutien scolaire en ligne avec myMaxicours

Le service propose une plateforme de contenus interactifs, ludiques et variés pour les élèves du CP à la Terminale. Nous proposons des univers adaptés aux tranches d'âge afin de favoriser la concentration, encourager et motiver quel que soit le niveau. Nous souhaitons que chacun se sente bien pour apprendre et progresser en toute sérénité ! 

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