Arbre en c

oscar -  
 hamdi khaled -
bonjour

j'ai des problèmes pour codifier un arbre binaire en c (pacours infixé post fixé prefixé; aidez moi svp
merci.
Configuration: programmation

6 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    voici un exemple (à toi d'adapter)
    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct N_
    {
      int nb;
      struct N_*gauche;
      struct N_*droite;
    } Noeud;
    
    void CreerArbre (Noeud ** racine, int n);
    void Traiter (Noeud * racine);
    void AfficherPrefixe (Noeud * racine);
    void AfficherPostfixe (Noeud * racine);
    void AfficherInfixe (Noeud * racine);
    
    Noeud *alloc ();
    
    int main ()
    {
      Noeud *racine;
    
      racine = NULL;
      int n;
    
      printf ("Numéro [100 pour terminer] ? ");
      scanf ("%d", &n);
      while (n != 100) {
        CreerArbre (&racine, n);
        printf ("Numéro [100 pour terminer] ? ");
        scanf ("%d", &n);
      }
      AfficherPrefixe (racine);
      puts ("");
      AfficherInfixe (racine);
      puts ("");
      AfficherPostfixe (racine);
      puts ("");
      return 0;
    }
    
    void CreerArbre (Noeud ** racine, int n)
    {
      Noeud *nouveau;
    
      nouveau = alloc ();
    
      if (*racine == NULL) {
        nouveau->nb = n;
        nouveau->gauche = NULL;
        nouveau->droite = NULL;
        *racine = nouveau;
      }
      else if (n < (*racine)->nb)
        CreerArbre (&(*racine)->gauche, n);
      else if (n > (*racine)->nb)
        CreerArbre (&(*racine)->droite, n);
    }
    
    
    Noeud *alloc ()
    {
      Noeud *noeud;
    
      noeud = (Noeud *) malloc (sizeof (Noeud));
      return noeud;
    }
    
    void Traiter (Noeud * racine)
    {
      printf ("%d (%p) ; ", racine->nb, racine);
    }
    
    void AfficherPrefixe (Noeud * racine)
    {
      if (racine != NULL) {
        Traiter (racine);
        AfficherPrefixe (racine->gauche);
        AfficherPrefixe (racine->droite);
      }
    }
    void AfficherPostfixe (Noeud * racine)
    {
      if (racine != NULL) {
        AfficherPostfixe (racine->gauche);
        AfficherPostfixe (racine->droite);
        Traiter (racine);
      }
    }
    
    
    void AfficherInfixe (Noeud * racine)
    {
      if (racine != NULL) {
        AfficherInfixe (racine->gauche);
        Traiter (racine);
        AfficherInfixe (racine->droite);
      }
    }
    
    3
    1. tissafi
       
      mercciiiii mon ami pour tttt
      0
    2. hamdi khaled
       
      meci frere
      0
  2. gdavis Messages postés 4 Date d'inscription   Statut Membre 3
     
    Merci lami20j,
    C'est génial.

    Cpdant, j'ai écris un truc qui me coince à tout moment avec des erreur.

    Donc je veux un qui marche sans error, afin de bien comprendre les contours de C.

    Je rappelle mon 1er prob:

    Un programme C qui me permet de retrouver la représentation fonctionnelle d'un arbre abstrait:
    1- à partir de sa représentation préfixée d'une part,
    2 - et de sa représentation postfixée d'autre part,
    3 - en fin de sa représentation infixée.

    Bonne soirée
    3
  3. kij
     
    je peux te filer des fonction pour les parcours d'arbre et compagnie mais faut attendre demain...
    0
    1. pathus
       
      bonjour,
      est ce que vous pouvez me filer des fonctions de parcours dans un arbre et compagnie??
      0
    2. ici
       
      chgi.developpez.com/arbre/binaire/
      0
  4. COC.C
     
    BON TU VEUX DES FONCTIONS EN RECURSIF?
    0
    1. gdavis Messages postés 4 Date d'inscription   Statut Membre 3
       
      Bsoir COC.C

      Tu sais, je suis un débutant en C.
      Ainsi, il me faut quelque chose qui marche bien pour me permettre de comprendre les contours de cet environnement également.

      Des fonctions récursives ne me gêneront pas.

      L'optimisation viendra après.

      Bne soiréé
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. gdavis
     
    Bonsoir

    Qu'est ce qui fait la différence entre un code écrit en c sous windows et le même code en c sous linux?
    0
    1. Titi
       
      Y'en a pas

      Bon courage
      0
    2. vico
       
      les librairies
      0
  7. kcmo31 Messages postés 22 Statut Membre
     
    bonjour , j'utilise les outil lex et yacc pour concevoir une grammaire connue , j'ai besoin d'une méthode pour le parcour d'un arbre n-aire au niveau de yacc ( méthode écrite en C )
    merci
    0