Vous êtes sur la page 1sur 4
Ministère de l'Enseignement Supérieur et de la Recherche Scientifique Faculté de Sciences Département

Ministère de l'Enseignement Supérieur et de la Recherche Scientifique

Faculté de Sciences Département d’Informatique

Algorithmique et Structure de Données Contrôle Continu 2 LMD informatique 2 ème semestre 19 Juin 2011 - Durée = 1H30 Tous documents interdits

19 Juin 2011 - Durée = 1H30 Tous documents interdits Nom : Prénom : Exercice 1

Nom :

Prénom :

Exercice 1

1. « Elle facilite la résolution de certains problèmes répétitifs, en contre partie c’est une méthode

très gourmande en ressource mémoire. »

Ici nous décrivons la programmation…

  Logique   Itérative   Parallèle   Récursive
  Logique   Itérative   Parallèle   Récursive
  Logique   Itérative   Parallèle   Récursive
  Logique   Itérative   Parallèle   Récursive
 

Logique

 

Itérative

 

Parallèle

 

Récursive

2. Soit les deux fonctions suivantes

  Récursive 2. Soit les deux fonctions suivantes Quel est le type de cette récursivité :

Quel est le type de cette récursivité : (Choix multiple):

  Simple   Multiple   Croisée   Mutuelle
  Simple   Multiple   Croisée   Mutuelle
  Simple   Multiple   Croisée   Mutuelle
  Simple   Multiple   Croisée   Mutuelle
 

Simple

 

Multiple

 

Croisée

 

Mutuelle

3. Finaliser la fonction suivante, qui permet de générer le factoriel d’un nombre entier positif ou

nul

générer le factoriel d’un nombre entier positif ou nul 4. Etant donnée la fonction suivante: int

4. Etant donnée la fonction suivante:

int Morris(int a, int b) { if (a==0) return 1; return Morris(a-1, Morris(a, b));

}

Pour Morris (1,0), combien de fois nous faisons appel à la fonction Morris ?

1 4 7 ∞

1

1 4 7 ∞

4

1 4 7 ∞

7

1 4 7 ∞

5. Donner la liste des résultats après exécution des lignes de codes suivantes :

résultats après exécution des lignes de codes suivantes : {13.45, 4.56, 1.2, 67.4} {13.45, 4.56, 1.2}
{13.45, 4.56, 1.2, 67.4} {13.45, 4.56, 1.2} {13.45, 4.56} {13.45}
{13.45, 4.56, 1.2, 67.4} {13.45, 4.56, 1.2} {13.45, 4.56} {13.45}
{13.45, 4.56, 1.2, 67.4} {13.45, 4.56, 1.2} {13.45, 4.56} {13.45}
{13.45, 4.56, 1.2, 67.4} {13.45, 4.56, 1.2} {13.45, 4.56} {13.45}

{13.45, 4.56, 1.2, 67.4}

{13.45, 4.56, 1.2}

{13.45, 4.56}

{13.45}

6. Donner une version itérative et une version récursive d’une fonction booléenne qui, étant donné un tableau Tab répond vrai si le tableau est trié.

Fonction itérative

Fonction récursive

Exercice 2 :

1. Dessinez l’arbre binaire de recherche (ABR) résultant des insertions successives (aux feuilles)

des éléments de clefs 10, 8, 6, 9, 12, 11, 14.

10 10 9 10 8 12 12 8 8 12 8 12 6 9 14
10
10
9
10
8
12
12
8
8
12
8
12
6
9
14
11
9
6
10
6
11
14
6
9
11
14
11
14

2. Que peut-on dire de l’arbre résultant ? (Choix multiple):

Binaire Entier Parfait ABR

Binaire

Binaire Entier Parfait ABR

Entier

Binaire Entier Parfait ABR

Parfait

Binaire Entier Parfait ABR

ABR

3. générer les parcours en largeur, et en profondeur (préfix, infix et postfix) de cet arbre.

Largeur : Largeur : Largeur : Largeur : 10,8,12,6,9,11,14 10,8,12,6,9,11,14 10,8,6,9,12,11,14
Largeur : Largeur : Largeur : Largeur : 10,8,12,6,9,11,14 10,8,12,6,9,11,14 10,8,6,9,12,11,14
Largeur : Largeur : Largeur : Largeur : 10,8,12,6,9,11,14 10,8,12,6,9,11,14 10,8,6,9,12,11,14
Largeur : Largeur : Largeur : Largeur : 10,8,12,6,9,11,14 10,8,12,6,9,11,14 10,8,6,9,12,11,14

Largeur :

Largeur :

Largeur :

Largeur :

10,8,12,6,9,11,14

10,8,12,6,9,11,14

10,8,6,9,12,11,14

6,8,9,10,11,12,14

Préfix :

Préfix :

Préfix :

Préfix :

6,9,8,11,14,12,10

10,8,6,9,12,11,14

10,8,12,6,9,11,14

10,8,6,9,12,11,14

Infix :

Infix :

Infix :

Infix :

10,8,6,9,12,11,14

6,8,9,10,11,12,14

6,9,8,11,14,12,10

6,9,8,11,14,12,10

Postfix :

Postfix :

Postfix :

Postfix :

6,8,9,10,11,12,14

6,9,8,11,14,12,10

6,8,9,10,11,12,14

10,8,12,6,9,11,14

4. Voici une liste aléatoire de 10 éléments.

5

3

1

4

7

6

9

2

8

10

On s’intéresse aux arbres binaires de recherche. Construire l’arbre binaire de recherche par adjonction des valeurs aux feuilles, dans l’ordre de la liste.

5 7 6 3 7 4 6 9 7 1 4 6 9 3 1
5
7
6
3
7
4
6
9
7
1
4
6
9
3
1
9
2
2
8
1
4
2
8
10
5
8
10
10
3
5

5. Soit la procédure récursive suivante :

Procedure lecture (arbre) Debut si arbre non vide alors ecrire (valeur_de_la_racine); lecture (sous-arbre droit); lecture (sous-arbre gauche); finsi; fin lecture;

Comment modifier la procédure précédente pour obtenir la liste triée par ordre décroissant ?

Procedure lecture (arbre) Debut si arbre non vide alors lecture (sous-arbre gauche); ecrire (valeur_de_la_racine);
Procedure lecture (arbre) Debut si arbre non vide alors lecture (sous-arbre gauche); ecrire (valeur_de_la_racine);
Procedure lecture (arbre) Debut si arbre non vide alors lecture (sous-arbre gauche); ecrire (valeur_de_la_racine);

Procedure lecture (arbre) Debut si arbre non vide alors lecture (sous-arbre gauche); ecrire (valeur_de_la_racine); lecture (sous-arbre droit); finsi; fin lecture;

Procedure lecture (arbre) Debut si arbre non vide alors lecture (sous-arbre droit); ecrire (valeur_de_la_racine); lecture (sous-arbre gauche); finsi; fin lecture;

Procedure lecture (arbre) Debut si arbre non vide alors ecrire (valeur_de_la_racine); lecture (sous-arbre gauche); lecture (sous-arbre droit); finsi; fin lecture;

Exercice 3

Nous allons procéder à élaborer un codage spécifique, pour cela nous définissons le tableau suivant :

A partir de ce tableau :

1) Générer l’arbre binaire correspondant.

Nous marquons les arcs « fils gauches » avec 0 et les arcs « fils droit » avec des 1.

Le chemin de la racine au caractère nous donne une suite de 0 et de 1 qui définit le code du caractère.

E 00 B 010 A 10 R 11 2) Encoder le mot « ARBRE »
E
00
B
010
A
10
R
11
2) Encoder le mot « ARBRE »

3) Ajouter la lettre ‘S’ dans cet arbre

4) Encoder le mot « ARBRES »

A 10 R 11 2) Encoder le mot « ARBRE » 3) Ajouter la lettre ‘S’