• Aucun résultat trouvé

Correction TP 5 :Types de donn´ees abstraits arbre

N/A
N/A
Protected

Academic year: 2022

Partager "Correction TP 5 :Types de donn´ees abstraits arbre"

Copied!
7
0
0

Texte intégral

(1)

Correction TP 5 :Types de donn´ees abstraits arbre

Licence 2 MASS semestre 2, 2007/2008

Exercice 1 : Arbre de Nombres

a- Algorithme somme(a: arbre) : entier d´ebut

siarbreEstVide?(a)alors retourner0

sinon

retourner racine(a) + somme(arbreGauche(a)) + somme(arbreDroit(a)) fin si

fin

b- Algorithme maximum(a: arbre) : entier d´ebut

siarbreEstVide?(a)alors retourner0

sinon

retournermax2(racine(a),max2(maximum(arbreGauche(a)), maximum(arbreDroit(a)) ))

fin si fin

Il faut pour cet algorithme des nombres au dessus de 0. Je propose d’autres algorithmes :

Algorithme maximumR(a: arbre) : entier d´ebut

siarbreEstVide?(a)alors retourner0

sinon

siarbreEstVide?(arbreGauche(a))alors siarbreEstVide?(arbreDroit(a))alors

retournerracine(a) sinon

retournermax2(racine(a), maximumR(arbreDroit(a)) ) fin si

sinon

siarbreEstVide?(arbreDroit(a))alors

retournermax2(racine(a), maximumR(arbreGauche(a)) ) sinon

retournermax2(racine(a),max2(maximumR(arbreGauche(a)), maximumR(arbreDroit(a)) ))

fin si

(2)

fin si fin si fin

Ou encore une r´ecursivit´e terminale :

Algorithme maximumIter(a: arbre,m: r´eel) : entier d´ebut

siarbreEstVide?(a)alors retournerm

sinon

siracine(a)< malors

retournermax2(maximumIter(arbreGauche(a),m), maximumIter(arbreDroit(a), m) )

sinon

retournermax2(maximumIter(arbreGauche(a), racine(a)), maximumIter(arbreDroit(a), racine(a)) )

fin si fin si fin Avec :

Algorithme maximumI(a: arbre) : entier d´ebut

siarbreEstVide?(a)alors retourner0

sinon

retournermaximumIter(a, racine(a)) fin si

fin

Ou encore pour r´egler le cas de la valeur par d´efault :

Algorithme maximumDef(a: arbre, valeurDefaut : entier) : entier d´ebut

siarbreEstVide?(a)alors retournervaleurDefaut sinon

retournermax2(racine(a),max2(maximum(arbreGauche(a)), maximum(arbreDroit(a)) ))

fin si fin avec :

Algorithme maximumD(a: arbre) : entier d´ebut

siarbreEstVide?(a)alors retourner0

sinon

(3)

retournermaximumDef(a, racine(a)) fin si

fin

Exercice 2 : Propri´ et´ es d’un arbre

a- Algorithme nbNoeud(a: arbre) : entier d´ebut

siarbreEstVide?(a)alors retourner0

sinon

retourner1 + nbNoeud(arbreGauche(a)) + nbNoeud(arbreDroit(a)) fin si

fin

b- Algorithme hauteur(a: arbre) : entier d´ebut

siarbreEstVide?(a)alors retourner0

sinon

retourner1 + max2(hauteur(arbreGauche(a)), hauteur(arbreDroit(a) ))

fin si fin

o`umax2 retourne le maximum de 2 nombres en param`etre

Exercice 3 : Parcours

a-

orage

bleus

diamant temps

fleur

or patiente voyage

b- ǫest le mot vide

Algorithme prefixe(a: arbre) : mot d´ebut

siarbreEstVide?(a)alors retournerǫ

sinon

retournerconcat(racine(a), concat(arbreGauche(a), arbreDroit(a))) fin si

fin

(4)

Algorithme infixe(a: arbre) : mot d´ebut

siarbreEstVide?(a)alors retournerǫ

sinon

retournerconcat(arbreGauche(a), concat(racine(a), arbreDroit(a))) fin si

fin

Algorithme postfixe(a: arbre) : mot d´ebut

siarbreEstVide?(a)alors retournerǫ

sinon

retournerconcat(arbreGauche(a), concat(arbreDroit(a), racine(a))) fin si

fin

c- pr´efixe : oragediamantblausorfleurtempspatientevoyage infixe : bleusdiamantfleurororagepatientetempsvoyage postfixe : bleusfleurordiamantpatientevoyagetempsorage

Exercice 4 : Filtre

a- Algorithme extraitMots(a: arbre) : arbre d´ebut

siarbreEstVide?(a)alors retournerarbreVide() sinon

silettre(racine(a), 0) = ’m’alors

retournerarbreCons(”mama”, extraitMots(arbreGauche(a)), extraitMots(arbreDroit(a))) sinon

retournerarbreCons(racine(a), extraitMots(arbreGauche(a)), extraitMots(arbreDroit(a))) fin si

fin si fin

(5)

Exercice 5 : Recherche

a-

55

12 78

54

22

30 51

32

61

b- Algorithme recherche(a: arbre d’entier,n: entier) : booleen d´ebut

siarbreEstVide?(a)alors retournerfaux

sinon

siracine(a) = nalors retournervrai sinon

siracine(a)< nalors

retourner recherche(arbreDroit(a), n) sinon

retourner recherche(arbreGauche(a), n) fin si

fin si fin si fin

Le nombre de comparaisons est au plus la hauteur de l’arbre.

c- Algorithme maximum(a: arbre d’entier) : entier d´ebut

siarbreEstVide?(a)alors retourner0

sinon

siarbreEstVide?(arbreDroit(a))alors retournerracine(a)

sinon

retourner maximum(arbreDroit(a)) fin si

fin si

(6)

fin

Aucune comparaison n’est faite bien sur...

Par contre, le nombre de test de l’ordre de 2 fois le nombre d’´el´ements sur la droite de l’arbre qui est major´e par la hauteur de l’arbre.

d- Algorithme ajout(n: entier,a: arbre d’entier) : arbre d’entier d´ebut

siarbreEstVide?(a)alors

retournerarbreCons(n, arbreVide(), arbreVide()) sinon

sin <racine(a)alors

retournerarbreCons(racine(a), ajout(n, arbreGauche(a)), arbreDroit(a)) sinon

siracine(a)< nalors

retournerarbreCons(racine(a), arbreGauche(a), ajout(n, arbreDroit(a))) sinon

retournera fin si

fin si fin si fin

e- Algorithme supprimer(a: arbre d’entier) : arbre d’entier d´ebut

siarbreEstVide?(a)alors retournerarbreVide() sinon

siarbreEstVide?(arbreGauche(a))alors retournerarbreDroit(a)

sinon

siarbreEstVide?(arbreDroit(a))alors retournerarbreGauche(a)

sinon

retournerarbreCons(max(arbreGauche(a)), supprimerMax(arbreGauche(a)), arbreDroit(a))

fin si fin si fin si fin

Algorithme supprimerMax(a: arbre d’entier) : arbre d’entier d´ebut

siarbreEstVide?(a)alors retournerarbreVide() sinon

siarbreEstVide?(arbreDroit(a))alors retournerarbreGauche(a)

sinon

(7)

retournerarbreCons(racine(a), arbreGauche(a), supprimerMax(arbreDroit(a))) fin si

fin si fin

Exercice 6 : Taches prioritaires

a- un peu d’imagination...

b- Algorithme supprimer(a: arbre de couple,s: entier) : arbre de couple d´ebut

siarbreEstVide?(a)alors retournerarbreVide() sinon

siracine(a)≤salors retournerarbreVide() sinon

retournerarbreCons(racine(a), supprimer(arbreGauche(a),s), supprimer(arbreDroit(a), s))

fin si fin si fin

Références

Documents relatifs

b - Le fichier ruban-3 initial final.csv contient la longueur de la trajectoire suivie par la pro- cession au d´ ebut (lorsque la tˆ ete atteint le point d’arriv´ e) et ` a la fin de

b - Ecrire une fonction carres qui affiche une ligne de carr´ es dont les intensit´ es de couleurs rouges, bleues et vertes sont contenues dans trois tableaux d’entier de mˆ

Statistique descriptive mono-vari´ e Bases de R Donn´ ees bi-vari´ ees Tests statistiques.. Objectifs

b - Le fichier ruban-3 initial final.csv contient la longueur de la trajectoire suivie par la pro- cession au d´ ebut (lorsque la tˆ ete atteint le point d’arriv´ e) et ` a la fin de

[r]

[r]

[r]

[r]