Académique Documents
Professionnel Documents
Culture Documents
Interrogation 2
Durée 45mn
Documents et Téléphones portables sont Interdits
Matricule Nom Prénom Groupe
b. Préordre inversé 45, 65, 70, 67, 55, 30, 40, 35, 45, 10
(RDG)
c. Inordre (GRD) 10, 15, 30, 35, 40, 45, 55, 65, 67, 70
d. Inordre Inversé 70, 67, 65, 55, 45, 40, 35, 30, 15, 10
(DRG)
e. Postordre (GDR) 10, 15, 35, 40, 30, 55, 67, 70, 65, 45
f. Postordre inversé 67, 70, 55, 65, 35, 40, 10, 15, 30,45
1 Ou insertion au début de la liste L : Allouer (S) ; aff_val(S, x) ; aff_suiv(S, nil) ; aff_suiv(S, L) ; L←S //mettre à jour la tête de
la liste
Aroussi Page 2
R FD(R)
FTQ
Retourner (L)
2ème méthode : Parcours inordre
CreerPile(P) ; L nil ;
TQ (R≠Null) ou (non PileVide(P)) faire
TQ (R≠Null) //explorer la branche
Empiler (P, R)
R FG(R)
FTQ
Depiler (P, R)
// insertion à la fin dans la liste L2
Allouer (S)
aff_val(S, Info(R))
aff_suiv(S, nil)
Si (L=nil) alors //la liste est vide
L ←S // mettre à jour l’entête
Sinon
aff_suiv(Q, S)
Q←S //sauvegarder l’@ du dernier maillon
R FD(R)
FTQ
Retourner (L) ;
3ème méthode : parcours en largeur
Var F:filed’attente; L, P : *Maillon
Debut
L Nil ;
Si R ≠ NIL Alors
Enfiler(F,R);
TQ (Non FileVide(F))
Defiler(F,R);
// insertion à la fin dans la liste L3
Allouer (S)
aff_val(S, Info(R))
aff_suiv(S, nil)
Si (L=nil) alors //la liste est vide
L ←S // mettre à jour l’entête
Sinon
2 Ou insertion au début de la liste L : Allouer (S) ; aff_val(S, x) ; aff_suiv(S, nil) ; aff_suiv(S, L) ; L←S //mettre à jour la tête de
la liste
3 Ou insertion au début de la liste L : Allouer (S) ; aff_val(S, x) ; aff_suiv(S, nil) ; aff_suiv(S, L) ; L←S //mettre à jour la tête de
la liste
Aroussi Page 3
aff_suiv(Q, S)
Q←S //sauvegarder l’@ du dernier maillon
Si FG(R) ≠ NIL Alors Enfiler(F,FG(R));
Si FD(R) ≠ NIL Alors Enfiler(F,FD(R));
FTQ
Retourner (L)
Fin
6. On veut calculer le nombre des entiers pairs et le nombre des entiers impairs dans l’arbre R. Pour
ce faire, on peut utiliser directement l’arbre R ou bien utiliser la liste d’entiers résultant de son
parcours (voir la question 5). Ecrire les procédures récursive
récursives
rsives :
a. « NbrEntiersPairImpairABR » qui permet de calculer le nombre des entiers pairs et le nombre des
entiers impairs dans l’arbre R.
b. « NbrEntiersPairImpairLLC » qui permet de calculer le nombre des entiers pairs et le nombre des
entiers impairs dans la liste L.
a. NbrEntiersPairImpairABR b. NbrEntiersPairImpairLLC
xp ; xi 0 xp ; xi 0
Procédure NbrEntiersPairImpairABR (R : * Tnoeud, Procédure NbrEntiersPairImpairLLC (L : * Tnoeud, Var
Var xp, xi : entier) xp, xi : entier)
1ère méthode : parcours préordre Si (L ≠ Nil) alors
Si (R ≠ Nil) alors Si (Valeur(R)mod 2 = 0) alors xp ++
Si (Info(R)mod 2 = 0) alors xp ++ Sinon xi ++
Sinon xi ++ NbrEntiersPairImpairLLC (suivant (L), xp, xi)
NbrEntiersPairImpairABR (FG(R), xp, xi) FSI
NbrEntiersPairImpairABR (FD(R), xp, xi)
FSI
2ère méthode : parcours inordre
Si (R ≠ Nil) alors
NbrEntiersPairImpairABR (FG(R), xp, xi)
Si (Info(R)mod 2 = 0) alors xp ++
Sinon xi ++
NbrEntiersPairImpairABR (FD(R), xp, xi)
FSI
3ère méthode : parcours postordre
Si (R ≠ Nil) alors
NbrEntiersPairImpairABR (FG(R), xp, xi)
NbrEntiersPairImpairABR (FD(R), xp, xi)
Si (Info(R)mod 2 = 0) alors xp ++
Sinon xi ++
FSI
Bon courage
Aroussi Page 4