IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ada Discussion :

Parcourir un arbre binaire en Ada


Sujet :

Ada

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 77
    Points : 34
    Points
    34
    Par défaut Parcourir un arbre binaire en Ada
    Bonjour
    Voilà, je possède un arbre binaire et j'aimerais parcourir celui-ci à l'aide d'une pile.
    Voici mon algorithme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Si le noeud est une variable,
      Si le noeud est un enfant gauche
        père.eval_gauche <- éval
      Sinon
        père.eval_droite <- eval
      Finsi
      Dépiler
    Sinon Si l'éval de l'enfant gauche est infini, 
      on empile (enfant_gauche_courant,infini,infini)
    Sinon
      Si l'éval de l'enfant droit est infini
        on empile (enfant_droit_courant,infini,infini)
      Sinon
        Si le noeud est un OU
          res <- eval_gauche ou eval_droite
        Sinon...
        Fin Si
        Si le noeud est un enfant gauche
          père.eval_gauche <- res
        Sinon
          père.eval_droite <- res
        Finsi
        Dépiler
      FinSi
    FinSi
    J'aimerais mettre tout ça en ADA mais j'ai quelques petits problèmes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    procedure Indent(N: in Natural) is
      begin
        for I in 1..N loop Put(' '); end loop;
      end;
      procedure Affiche(A: in Arbre) is
        procedure Aux(A: in Arbre; N: in Natural; S: in String) is
        begin 
          if A/=null then
            Indent(N); Put(S); Put_Line(Element'Image(A.Val));
            Aux(A.Gauche, N+3, "Gauche: ");
            Aux(A.Droit,  N+3, "Droit : ");
          end if;
        end;
      begin
        Aux(A,0,"Racine: ");
      end;
    Si quelqu'un peut m'aider car mon programme n'utilise pas la pile et je ne pense pas qu'il parcourt celui-ci mais plutôt qu'il l'affiche.
    Merci d'avance.

  2. #2
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2006
    Messages : 77
    Points : 34
    Points
    34
    Par défaut
    J'ai revu mon programme.
    Si quelqu'un aurait la gentillesse de me le corriger
    Merci bien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    type noeud; 
     
       type Pointeur_noeud is access noeud; 
     
       type noeud is 
     
          record 
     
             Val      : Integer;  
     
             P_Gauche : Pointeur_noeud;  
     
             P_Droite : Pointeur_noeud;  
     
          end record; 
     
     
     
    procedure affiche_element_arbre (ptr : in out point_noeud )  is 
     
    begin
     
    if  ptr /= null 
     
    then
     
               put(ptr.valeur);
     
    new_line;
     
     affiche_element_arbre(ptr.gauche) ;
     
    affiche_element_arbre(ptr.droite) ;
     
     
    end if ;
     
    end affiche_element_arbre;

Discussions similaires

  1. Afficher un arbre binaire avec sa structure
    Par PhoneKilleR dans le forum C
    Réponses: 7
    Dernier message: 23/04/2008, 23h24
  2. suppression d'un arbre binaire
    Par NomUtilisateurDejaPris dans le forum C
    Réponses: 11
    Dernier message: 16/02/2004, 10h05
  3. [Arbre binaire de Recherche]
    Par Giovanny Temgoua dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 06/02/2004, 11h45
  4. Arbre binaire
    Par Heaven dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 02/02/2004, 19h01
  5. [LG]probleme de creation arbre binaire
    Par jsaviola dans le forum Langage
    Réponses: 2
    Dernier message: 06/01/2004, 20h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo