Utiliser Python dans les arbres binaires de recherche
- Fiche de cours
- Quiz
- Profs en ligne
- Videos
- Application mobile
Utiliser Python dans les arbres binaires de recherche.
- 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.
- Comprendre la structure d’un arbre binaire de recherche.
- Utiliser Python pour déterminer les mesures (taille et hauteur) des arbres binaires.
- 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.
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.
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). |
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.
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.
La recherche du minimum et du maximum dans un arbre binaire de recherche est assez simple.
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.
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. |
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. |
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.
Voici sur Python Tutor l’implémentation de la recherche du minimum et du maximum dans un arbre binaire de recherche.
Vous avez obtenu75%de bonnes réponses !