Vous êtes sur la page 1sur 2

ECOLE NATIONALE A.

U 2016/2017
DINGENIEURS DE SFAX
Programmation structure DGIMA-GI1
TP 3

Les arbres binaires

Exercice 1 :
Il sagit implmenter les arbres binaires de recherche vues en cours. Ecrire une fonction main
qui permet de tester les fonctions suivantes :
1. est_vide(a) : retourne True si a est vide et False sinon.
2. insertion_liste(lv, a) : insre les valeurs de la liste lv dans a qui ny figurent pas dj. Pour
simplifier lv peut tre un tableau dentiers.
3. afficher(a, mode) : affiche les valeurs de a selon le mode prcis par le second argument,
o mode est une chane de caractres qui peut prendre les valeurs prefixe, infixe, postfixe.
4. afficherStruct(a) : affiche les valeurs de a avec sa structure. Exemple :
...........c
............../...\
...........a.......e
................../...\
................d.......f
5. recherche_Iter(v, a) et recherche_Rec(v, a) : retourne True si v figure dans a et False
sinon - versions itrative et rcursive.
6. max_val(a) : retourne la valeur maximale dun Arbre Binaire non vide.
7. hauteur(a) : retourne la hauteur dun Arbre Binaire.
8. nb_noeuds(a) : retourne le nombre de nuds dun Arbre Binaire.
9. supprime(v, a) : supprime le nud de a portant la valeur v, sil en existe un.

Exercice 2 :
On considre les expressions arithmtiques sur les entiers nutilisant que les oprateurs +, , -
et /.Ces expressions peuvent tre reprsentes par des arbres binaires dont les nuds internes
sont tiquets par lun des quatre oprateurs tandis que les feuilles sont tiquetes par des
entiers. Par exemple, larbre reprsent sur la Figure ci-dessus reprsente lexpression
arithmtique (3 - 2)(7+10 / 2).

1/2
Remarque : Les oprateurs sont reprsents par la chane de caractres qui leur correspond.
Par exemple, si lon veut tester si un nud contient loprateur + on pourra crire if n.valeur
== +.

1) Ecrive une fonction creer_arbre(expression) qui permet la cration dun arbre binaire a
qui reprsente bien une expression arithmtique.

2) Ecrive une fonction valide(a) qui teste si un arbre binaire a ne contenant que des entiers
et des oprateurs, reprsente bien une expression arithmtique valide (chaque nud
tiquet par un oprateur doit avoir deux fils non vides et les entiers ne doivent apparatre
que sur les feuilles de larbre).

3) crie une fonction rcursive eval(a) qui renvoie la valeur correspondant lexpression
arithmtique reprsente par larbre a (par exemple, sur larbre illustr par la Figure, la
fonction eval doit renvoyer 12). On suppose ici que larbre reprsente une expression
valide.

2/2

Vous aimerez peut-être aussi