Académique Documents
Professionnel Documents
Culture Documents
Arbres en Python
1 Représentation en mémoire
1.1 Avec des objets
On a vu qu’il était possible d’utiliser la programmation orientée objet pour simuler un chaînage.
Vous pouvez reprendre le travail effectué durant le TP sur les objets, et le modifier pour avoir toutes
les fonctions utiles à la manipulation d’un arbre binaire :
— Arbre(x) crée et renvoie un nouvel arbre formé d’un seul nœud dont l’étiquette est x.
— a.val(), a.fg() et a.fd() renvoient respectivement la racine, le fils gauche et le fils droit de a.
— a.modif_val(x) affecte la nouvelle valeur x à la racine de a.
— a.modif_g(b) et a.modif_d(b) remplacent respectivement le fils gauche ou droit de a par b.
(Attention, avec ces dernières fonctions certains sous-arbres peuvent se retrouver partagés entre
plusieurs arbres distincts !)
On note que l’indice None représente un fils vide (mais on peut aussi utiliser −1 par exemple).
Il faut de plus mémoriser :
— l’indice de la racine (on pourrait décider que celle-ci est à l’indice 0 mais pour réorganiser l’arbre
ce n’est pas toujours pratique)
— le nombre de nœuds dans l’arbre (là encore pas indispensable, mais pratique pour savoir quelle
ligne est utilisable pour créer un nouveau nœud)
Exercice 2 Écrire les parcours en profondeur et en largeur pour la représentation de votre choix.
2 Applications
Exercice 3 Utiliser vos arbres binaires pour coder l’algorithme de Huffman :
— On lira les données à compresser dans un fichier (voir plus bas le « kit de survie » pour lire et
écrire dans des fichiers en Python).
— On comptera les occurrences de chaque caractère afin de déterminer un code binaire optimal.
— Et enfin on produira le texte compressé sous forme d’une suite de 0 et de 1 dans un second fichier.
Testez votre programme et observez la taille des fichiers produits : pouvez-vous expliquer ce qui se
passe ?
On pourra enfin s’intéresser au problème du décodage du fichier compressé.
1
3 Annexe : Lecture et écriture dans des fichiers
On présente ici le « kit de survie » pour qui veut lire et écrire dans des fichiers en Python. Une fois
le principe compris, l’utilisation est extrêmement simple : c’est un point fort de Python.