TP3 Arbres

February 3, 2023 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download TP3 Arbres...

Description

 

ECOLE NATIONALE

A.U 2016/2017

D’INGENIEURS DE SFAX 

Programmation Progra mmation structurée  TP 3

DGIMA-GI1

L es ar ar br es bi bi na naii r es 

Exercice 1 :

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

valide.

2/2

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF