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

Pascal Discussion :

Afficher les éléments d'un arbre de recherche binaire


Sujet :

Pascal

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 16
    Points : 14
    Points
    14
    Par défaut Afficher les éléments d'un arbre de recherche binaire
    bonjour!
    voila mon probleme : afficher les elemnts d'un arbre de recherche binaire aprés avoir libérer chaque element en parcours postordre de façon itérative.

    svp, je veux savoir comment les afficher ces elements?
    merci d'avance.

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Avec un writeln ?

    Honnetement, tu vas avoir du mal à les afficher après les avoir libérer...
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Si à chaque noeud est attachée une etiquette, tu peux l'afficher avec "writeln" avant de le desalouer. Parce si tu libere la memoire avant, je ne sais pas par quel moyen tu pourras retrouver ce noeud une fois perdu. A moins qu'on ne comprenne pas bien ce que ta pré-occupation.

    Pourquoi utiliser l'iteration alors que la recursivité se fait tout naturellement?

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Merci d'avoir consacré du temps à mon problème.

    Ben c'est un travail demandé par mon professeur. Il a exigé l'itération sinon ça aurait été facile à faire avec la récursivité !
    Donc ce que vous suggérez, c'est afficher avant de libérer... et si je n'ai pas d'étiquette, comment je fais ??

  5. #5
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Tu as forcément une étiquette... (au moins à ton T-shirt ) Si tu n'en as pas c'est un problème, mais comme les exercices des professeurs sont tous très bien écrits, ton arbre stocke forcément des données. Selon le type de ces données, tu dois pouvoir les afficher soit avec writeln, soit avec une procédure faite en ce sens.
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    cette procédure libère les éléments d'un arbre binaire en inordre
    (sachant que Suppression (val): supprime une valeur val donnée dans un arbre binaire
    et pere(Q) renvoit le pere d'un noeud d' adresse Q donnée )

    mais ça marche pas! si j'enlève suppression(val) elle affiche les éléments en inordre !
    ma question est ou dois-je placer la procedure suppression ?

    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
    39
    40
    41
    42
    43
    Procedure  liberer_inordre(R:point) ;
     begin
       var Q :point;
            stop: boolean;
       P:=R;
       while P<> Nil do
       begin
                while fg(p)<> nil do
                begin
                   P:=fg(p);
     
                end;
        val:=p^.valeur;
        writeln(val);
        Suppression(val);
        if  fd(p) <> nil  then
           P:=fd(p)
        else
           Stop :=false;
           Q :=pere(p)
           while ( not stop ) and (Q<>Nil)  do
               begin
                 if (p=fg(Q)) then
                    begin
                       val:=Q^.valeur;
                       writeln(val);
                       suppression(val);
                       if fd(Q)<> nil then
                         begin
                            stop:= true;
                             p:=fd(Q)
                       else
                           p:= Q;
                           Q:= pere(Q);
                      end
                 else
                    p:=Q;
                    Q:=pere(Q);
                 end;
           end;
        end;
     end;
    end;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher les éléments de la suggestbox au clic
    Par mikees dans le forum GWT et Vaadin
    Réponses: 13
    Dernier message: 17/05/2011, 13h34
  2. Afficher les no de pages/lignes des recherches
    Par white-angel dans le forum VBA Word
    Réponses: 7
    Dernier message: 08/04/2008, 18h10
  3. Itérer sur tous les éléments d'un arbre
    Par *alexandre* dans le forum Langage
    Réponses: 7
    Dernier message: 05/12/2007, 16h22
  4. Réponses: 2
    Dernier message: 05/05/2007, 17h37
  5. Réponses: 2
    Dernier message: 27/12/2005, 20h09

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