Il s’agit implémenter 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( insertion_liste(lv, lv, a) : insère les valeurs de la liste lv dans a qui n’y figurent pas déjà. Pour simplifier lv peut être un tableau d’entiers. 3. afficher(a, mode) : affiche les valeurs de a selon le mode précisé par le second argument, où mode est une chaîne chaî ne de caractères qui peut prendre les valeurs prefixe, infixe, postfixe. 4. afficherStruc afficherStruct(a) t(a) : affiche les valeurs de a avec sa structure. Exemple : ……........... ...........c c .............. / /... ...\\ ...........a ........... a....... .......e e .................. / /... ...\\ ................ d....... .......f f
5. recherche_Iter(v, a) et recherche_Rec(v, a) : retourne True si v figure dans a et False sinon - versions itérative et récursive. 6. max_val(a) : retourne la valeur maximale d’un A rbre Binaire non vide. 7. hauteur(a) : retourne la hauteur d’un Arbre Binaire. 8. nb_noeuds(a) : retourne le nombre de nœuds d’un Arbre Binaire. 9. supprime(v, a) : supprime le nœud de a portant la valeur v, s’il en existe un. Exercice 2 :
On considère les expressions arithmétiques sur les entiers n’utilisant que les opérateurs +, , et /.Ces expressions peuvent être représentées par des arbres binaires dont les nœuds internes sont étiquetés par l’un des quatre opérateurs tandis que les feuilles sont étiquetées par des entiers. Par exemple, l’arbre représenté sur la Figure ci-dessus représente l’expression
arithmétique (3 - 2) (7+10 / 2).
1/2
Remarque :
Les opérateurs sont représentés par la chaîne de caractères qui leur correspond.
Par exemple, si l’on veut tester si un nœud contient l’opérateur + on pourra écrire if n.valeur == ’+’. 1) Ecrive une fonction creer_arbre(expression) qui permet la création d’un arbre binaire a qui représente bien une expression arithmétique. 2) Ecrive une fonction valide(a) qui teste si un arbre binaire a ne contenant que des entiers et des opérateurs, représente bien une expression arithmétique valide (chaque nœud étiqueté par un opérateur doit avoir deux fils non vides et les entiers ne doivent apparaître que sur les feuilles de l’arbre). 3) Écrie une fonction récursive eval(a) qui renvoie la valeur correspondant à l’expression arithmétique représentée par l’arbre a (par exemple, sur l’arbre illustré par la Figure, la fonction eval doit renvoyer 12). On suppose ici que l’arbre représente une expression
Thank you for interesting in our services. We are a non-profit group that run this website to share documents. We need your help to maintenance this website.