Corrigé 43. Enoncé
Soit
A , P , Pprime Des Arb ;
Soit Premier, Suiv des Fonctions ( Arb ) ;
Ascendant_gauche, Lister des Action ;
Xprime Un Entier ;
Niv Un Entier ;
Debut
Creer_arb ( A , [ 30 , 20 , 60 , 15 , 18 , 12 , 19 , 17 , 80 , 70 , 74
, 76 , 78 , 92 ] ) ;
Lire ( Niv ) ;
P := Premier ( Niv , A ) ;
Si P <> Nil
Ecrire ( Info ( P ) ) ;
Appel Ascendant_gauche ( P , Niv , Pprime ,
Xprime ) ;
Si Pprime <> Nil
Ecrire ( Info ( Pprime
) , Xprime )
Sinon
Ecrire ( 'pas de
suivant' ) ;
Fsi ;
Appel Lister ( P, niv ) ;
Sinon
Ecrire ( 'Niveau inexistant' )
Fsi
Fin
/* PREMIER */
Fonction Premier ( X , R ) : Arb ;
Soit
X Un Entier ;
R , P Des Arb ;
Debut
Si R = Nil
Premier := Nil ;
Sinon
Si X = 0
Premier := R
Sinon
P := Premier ( X - 1 ,
Fg ( R ) ) ;
Si P = Nil
Premier := Premier ( X - 1 , Fd ( R ) ) ;
Sinon
Premier := P ;
Fsi
Fsi
Fsi
Fin
/* ASCENDANT_GAUCHE */
Action Ascendant_gauche ( N , I , Nprime , Iprime )
Soit
N , Nprime Des Arb ;
I , Iprime Des Entiers ;
P Un Arb ;
Arret Un Booleen ;
Debut
P := Pere ( N ) ;
Iprime := I - 1 ;
Arret := Faux ;
Tq Non Arret Et ( P <> Nil )
Si ( Fg ( P ) = N ) Et ( Fd ( P ) <> Nil
)
Arret := Vrai
Sinon
N := P ;
P := Pere ( N ) ;
Iprime := Iprime - 1 ;
Fsi
Ftq ;
Nprime := P
Fin
/* SUIV */
Fonction Suiv ( A , I ) : Arb
Soit
P , A , Aprime Des Arb ;
I , Iprime Des Entiers ;
Continue Un Booleen ;
Debut
Continue := Vrai ;
Tantque Continue
Appel Ascendant_gauche ( A , I , Aprime ,
Iprime ) ;
Si Aprime = Nil
Suiv := Nil ;
Continue := Faux
Sinon
P := Premier ( I -
Iprime - 1 , Fd ( Aprime ) ) ;
Si P <> Nil
Suiv := P ;
Continue := Faux
Sinon
A := Aprime ;
I := Iprime
Fsi
Fsi
Fintantque
Fin
/* LISTER */
Action Lister ( P , Niv )
Soit
Niv Un Entier ;
Q , P Des Arb ;
Debut
Q := Suiv ( P , Niv ) ;
Tq Q <> Nil
Ecrire ( 'suivant = ' , Info ( Q ) ) ;
Q := Suiv ( Q , Niv )
Ftq ;
Ecrire ( 'plus de suivant dans le même niveau' )
Fin