Examen 1516 Session1z
Examen 1516 Session1z
Examen 1516 Session1z
Examen d’algorithmique
1/4
Université Paris Diderot L2 Informatique Année 2015–2016
On suppose que ces arbres sont représentés par des structures chaı̂nées (comme en
cours). Un noeud de l’arbre (type noeud) sera représenté par une structure ayant les
champs de valeurs suivants :
— un champ de nom val et de type entier contenant la valeur stockée ;
— un champ de nom fg et de type arbre contenant l’adresse du fils gauche ;
— un champ de nom fd et de type arbre contenant l’adresse du fils droit.
Et un arbre est un pointeur (adresse) vers un noeud (l’adresse 0 désigne un arbre vide).
Lorsqu’un noeud n’a pas de fils gauche, son champ fg vaut 0 (et c’est pareil pour le fils
droit avec fd). Un noeud qui n’a ni fils gauche, ni fils droit est une feuille.
Si a est un arbre non vide, a->val désigne la valeur stockée à sa racine (le premier
noeud de l’arbre), a->fg désigne l’adresse du fils gauche (donc un arbre), et a->fg désigne
l’adresse du fils droit, etc.
1. Dessiner la structure chaı̂née représentant l’arbre test ci-dessous :
2. Écrire un algorithme Somme qui étant donné un arbre a retourne la somme de toutes
les valeurs stockées dans les noeuds de cet arbre (et 0 si l’arbre est vide).
NB : Sur l’exemple, on doit renvoyer 36.
Profil suggéré : entier Somme(arbre a)
Appliquer votre algorithme sur l’arbre test (et décrire les éventuels appels de
fonction, ou itérations. . . ) .
2/4
Université Paris Diderot L2 Informatique Année 2015–2016
3/4
Université Paris Diderot L2 Informatique Année 2015–2016
ac. Et si m=[*,*], on retrouve tous les mots générés par l’algorithme de la question
précédente pour k = 2.
Donner le résultat de l’application de votre algorithme pour l’alphabet ⌃ =
{a, b, c} et m=[*,a,a,*].
3. On modifie le problème précédent en donnant un tableau d’entiers Nb[-] à la
place du motif m[-] : Nb va décrire la taille des séquences de lettres identiques. Par
exemple, si Nb est de taille 3 et que Nb[0] = 3, Nb[1] = 2 et Nb[2] = 1, alors les
mots recherchés commenceront par une lettre répétée trois fois, puis une autre (pas
la même !) sera répétée 2 fois, et le mot se terminera par un dernier changement
de lettre (sans répétition). Donc avec ⌃ = {a, b, c} et ce tableau Nb, on obtiendrait
les mots suivants : aaabba, aaabbc, aaacca, aaaccb, bbbaab, bbbaac, bbbcca, bbbccb,
cccaab, cccaac, cccbba, et cccbbc.
Modifier l’algorithme précédent pour résoudre ce problème.
Donner le résultat de l’application de votre algorithme pour l’alphabet ⌃ =
{a, b} et Nb=[2,4,3].
4/4