Vous êtes sur la page 1sur 3

Année universitaire : 2019/2020

Département d’informatique Trimestre 1


Master GLP
Programmation Python
TP n°6
Exercice 1 :Arbre binaire
On implémente les arbres binaires non vides par des listes de trois éléments : [valeur,[fils
gauche],[fils droit]] .Ecrire les fonctions suivantes en Python :

1. est vide(a) : retourne True si a est vide et False sinon.

2. filsgauche(a) : retourne le fils gauche de a si a est non vide et rien sinon.

3. filsdroit(a) : retourne le fils droit de a si a est non vide et rien sinon.

4. insertion(v, a) : ins`ere la valeur v dansa si elle n’y figure pas et ne fait rien sinon ;
l’arbre passé en paramètre doit être modifié.

5. insertion liste(lv, a) : insère les valeurs de la liste lv dans a qui n’y figurent pas déjà.

6. afficher(a,mode) : affiche les valeurs de a selon le mode précisé par le second argument,
où mode est une chaîne de caractères qui peut prendre les valeurs prefixe , infixe,
postfixe.

7. recherche Iter(v, a) et recherche Rec(v, a) : retourne True si v figure a et False sinon -


versions récursive.

8. max val(a): retourne la valeur maximale d’un ABR non vide.

9. hauteur(a) : retourne la hauteur d’un ABR.

10. nbnoeuds(a) : retourne le nombre de nœuds d’un ABR.

11. successeur(v,a) : retourne la plus petite valeur plus grande que v figurant dans a s’il y
en a une, et v sinon.

12. extrait max(a): retourne la valeur maximale d’un ABR non vide et supprime le noeud
correspondant.
Source : cours d’Algorithmique des L2 d’informatique et de mathématiques de l’université d’Aix Marseille, rédigé par F. Denis, S. Grandcolas et Y. Vaxès.

Exercice 2 : Graphes
a. Traduisez l’arbre ci-dessous dans sa représentation :

Page: 1/3
b. Ecrire en langage Python une fonction qui teste si le terme passé à son argument
représente un arbre n aire ou non ?

c. Ecrire en langage Python une fonction makearbre qui construit un arbre n aire à
partir d’un entier et d’une liste de sous-arbres.

d. Ecrire en langage Python des fonctions clé et fils qui extraient respectivement d’un
nœud interne sa clé et la liste de ses fils.

e. Définir en langage Python une fonction feuille qui renvoie le booléen true si et
seulement si son argument est une feuille.

f. Définir en langage Python une fonction qui calcule la hauteur d’un arbre n aire.

g. Définir en langage Python les fonctions nbfeuilles et nbnoeudsqui calculent


respectivement le nombre de feuilles et de nœuds (nœuds internes et feuilles) d’un
arbre n aire.

h. Définir en langage Python une fonction parcoursprofondeur qui énumère les clefs
d’un arbre en profondeur d’abord.

i. Définir en langage Python une fonction appartient qui renvoie true si et seulement si
l’entier argument est contenu dans l’arbre étudié.

j. Définir en langage Python une fonction qui permet de calculer la hauteur d'un
arbre. Il s'agit du plus grand nombre de générations de l'arbre.

k. Définir en langage Python une fonction arbres égaux qui teste l’égalité de deux
arbres.

l. Définir en langage Python une fonction parcourslargeur qui´énumère les clefs d’un
arbre en largeur d’abord.

Page: 2/3
Exercice 3 :

Exercice 4 : Plus court chemin dans un graphe


1. Implémenter l’algorithme de DISKTJRA ?

2. Tester le sur de gros graphes ?

Page: 3/3