{

  Arbre de recherche binaire

  Recherche du suivant inordre avec l'opération PERE

}

   SOIENT

       A UN ARB ;

       I , Val DES ENTIERS ;

       Recherche UNE ACTION ;

       Suivant_inordre UNE ACTION ;

     

   DEBUT

       CREER_ARB ( A , [ 23 , 15 , 45 , 18 , 22 , 10 , 13 , 78 , 32 , 50 ] ) ;

       POUR I := 1 , 5

           LIRE ( Val ) ;

           APPEL Suivant_inordre ( A , Val ) ;

         

       FINPOUR

   FIN

  { Recherche De Val Dans L'Arbre A }

   ACTION Recherche ( A , Val , P , Trouv )

   SOIENT

       A UN ARB ;

       P UN POINTEUR VERS ARB ;

       Val : ENTIERS ;

       Trouv UN BOOLEEN ;

     

   DEBUT

       Trouv := FAUX ;

       P := A ;

       TANTQUE ( P <> NIL ) ET ( NON Trouv ) :

           SI INFO ( P ) = Val

               Trouv := VRAI

           SINON

               SI INFO ( P ) < Val

                   P := FD ( P )

               SINON

                   P := FG ( P )

               FSI

           FSI

       FTQ ;

     

   FIN

  { SUIVANT Inordre D'UN Noeud }

   ACTION Suivant_inordre ( A , Val )

   SOIENT

       A : ARB ;

       Val : ENTIER ;

       Trouv , Continue DES BOOLEENS ;

       Q , P DES POINTEURS VERS ARB ;

     

   DEBUT

  { Recherche De Val }

       APPEL Recherche ( A , Val , P , Trouv ) ;

       SI NON Trouv

           ECRIRE ( 'ELEMENT Inexistant ' )

       SINON

           SI FD ( P ) <> NIL

               P := FD ( P ) ;

               TQ FG ( P ) <> NIL

                   P := FG ( P )

               FTQ ;

               ECRIRE ( 'Suiv_inordre =' , INFO ( P ) )

           SINON

               Q := PERE ( P ) ;

               Continue := VRAI ;

               TANTQUE ( Q <> NIL ) ET Continue

                   SI P = FD ( Q )

                       P := Q ;

                       Q := PERE ( P ) ;

                     

                   SINON

                       Continue := FAUX

                   FSI

               FTQ ;

               SI Q <> NIL

                   ECRIRE ( 'Suiv_inordre =' , INFO ( Q ) )

               SINON

                   ECRIRE ( 'Pas De SUIVANT Inordre' )

               FSI

           FSI

       FSI

   FIN