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

C Discussion :

est ce que c'est un arbre ?


Sujet :

C

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Par défaut est ce que c'est un arbre ?
    Slt est-ce que la structure suivante est un arbre ?
    autrement dit est ce que les fils d'un noeud doivent etre du meme type ou pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Tyepdef struct nœud
    {
    	Int nombre ;
    	Char *lettre ;
    	Int * suivant ;
    }neoud ;
    /*chaque nœud contient un pointeur vers une lettre et un pointeur vers le nœud suivant , a la fin on obtient un peigne gauche.*/
    merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    136
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 136
    Par défaut
    Bonjour,

    ça ne peut pas être un arbre, c'est juste une structure qui contient un int, un pointeur vers un char et un poiunteur vers un int.

    voici un exemple de noeud d'un arbre binaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    struct noeud
    {
          int valeur;
          struct noeud * fils_gauche;
          struct noeud * fils_droit;
    }
    essaye de voir ça, tu comprendras mieux :

    http://rperrot.developpez.com/articl...ctures/arbres/

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 392
    Par défaut
    Il y a plusieurs façons de faire des arbres en C, qu'ils soient homogènes ou non. Mais tous ne se traitent pas de la même façon. Voici quelques exemples dans le cas d'arbres homogènes (tous les noeuds de même type).

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    /* Arbre binaire simplement chainé, père->fils.
       En raison du chaînage simple, ça se traite avec des fonctions récursives,
       comme dans le tutorial de Romuald Perrot. */
    struct noeud
    {
    	/* Paternité */
    	struct noeud * pFilsGauche;
    	struct noeud * pFilsDroit;
    	/* Données */
    	DONNEES donnees;
    };
     
    /* Une autre signification possible pour les pointeurs :
       Arbre N-aire binarisé :
       http://fr.wikipedia.org/wiki/Arbre_binaire#Transformation_d.27un_arbre_quelconque_en_un_arbre_binaire */
    struct noeud
    {
    	/* Paternité */
    	struct noeud * pPremierFils;
    	/* Fraternité */
    	struct noeud * pFrereDroit;
    	/* Données */
    	DONNEES donnees;
    };
     
    /* Un type d'arbre simplement chaîné beaucoup plus rare, c'est l'arbre dans l'autre sens :
       Chaque fils pointe vers le père. */
    struct noeud
    {
    	/* Paternité */
    	struct noeud * pPere;
    	/* Données */
    	DONNEES donnees;
    };
     
     
    /* Les arbres doublement chaînés sont plus intéressants :
       Ils permettent de se déplacer dans les deux sens rien qu'avec les pointeurs,
       donc on n'est pas obligé d'utiliser un algorithme récursif pour jouer avec.
       Arbre binaire doublement chaîné : */
    struct noeud
    {
    	/* Paternité */
    	struct noeud * pPere;
    	struct noeud * pFilsGauche;
    	struct noeud * pFilsDroit;
    	/* Données */
    	DONNEES donnees;
    };
     
    /* Arbre N-aire doublement chaîné :
       Ici, le chaînage est double :
       non seulement entre le père et son fils ainé (et simple entre les fils cadets et le père),
       mais aussi d'un frère à l'autre. */
    struct noeud
    {
    	/* Paternité */
    	struct noeud * pPere;
    	struct noeud * pPremierFils;
    	/* Fraternité */
    	struct noeud * pFrereGauche;
    	struct noeud * pFrereDroit;
    	/* Données */
    	DONNEES donnees;
    };
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Tyepdef struct nœud
    {
    	Int nombre ;
    	Char *lettre ;
    	noeud * suivant ;
    }noeud ;
    et comme ça c un arbre hetero ?

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 392
    Par défaut
    Ça ressemble plus à une liste chaînée.

    Ce serait plutôt un truc de ce genre, un arbre hétérogène :
    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
    struct noeudM
    {
    	/* Paternité */
    	struct noeudM * pPapa;
    	struct noeudF * pMaman;
    	/* Données */
    	char * pNom;
    	int dateNaissance;
    };
     
    struct noeudF
    {
    	/* Paternité */
    	struct noeudM * pPapa;
    	struct noeudF * pMaman;
    	/* Données */
    	char * pNom;
    	int dateNaissance;
    	int nbEnfants;
    	char bonnet;
    };
    Ici, il peut y avoir des noeuds de différents types, mais ils restent des noeuds...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Médinoc
    Ça ressemble plus à une liste chaînée.

    Ce serait plutôt un truc de ce genre, un arbre hétérogène :
    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
    struct noeudM
    {
    	/* Paternité */
    	struct noeudM * pPapa;
    	struct noeudF * pMaman;
    	/* Données */
    	char * pNom;
    	int dateNaissance;
    };
     
    struct noeudF
    {
    	/* Paternité */
    	struct noeudM * pPapa;
    	struct noeudF * pMaman;
    	/* Données */
    	char * pNom;
    	int dateNaissance;
    	int nbEnfants;
    	char bonnet;
    };
    Je suis d'accord avec l'exemple d'arbre hétérogène, mais la structure me semble bien compliquée pour un truc comme ça...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    struct noeud
    {
            int Type  ;   /* 0  = Feminin  1 = Masculin */
     
    	/* Paternité */
    	struct noeud * pPapa;
    	struct noeud * pMaman;
    	/* Données */
    	char * pNom;
    	int dateNaissance;
    	int nbEnfants;
    	char bonnet;
    };

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 392
    Par défaut
    Naturellement, c'était un exemple...
    J'avais rajouté le champ bonnet pour introduire un semblant de différence...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Par défaut
    ok merci

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    Citation Envoyé par hunter99
    Slt est-ce que la structure suivante est un arbre ?
    autrement dit est ce que les fils d'un noeud doivent etre du meme type ou pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Tyepdef struct nœud
    {
    	Int nombre ;
    	Char *lettre ;
    	Int * suivant ;
    }neoud ;
    /*chaque nœud contient un pointeur vers une lettre et un pointeur vers le nœud suivant , a la fin on obtient un peigne gauche.*/
    merci
    Fais attention aux majuscules et minuscules

    Typedef -> typedef
    Int -> int
    Char -> char

  10. #10
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 112
    Par défaut

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

Discussions similaires

  1. est-ce que python est ce que je cherche
    Par SILICONE dans le forum Général Python
    Réponses: 5
    Dernier message: 21/12/2007, 14h23
  2. Qu'est ce que c'est qu'un Trigger ?
    Par shingo dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/10/2003, 22h09
  3. Un daemon qu'est ce que c'est exactement ?
    Par CedricYhuel dans le forum Administration système
    Réponses: 5
    Dernier message: 01/08/2003, 11h56
  4. Qu'est ce que c'est : Le GateA20 ?
    Par le mage tophinus dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 24/02/2003, 15h09
  5. Qu'est-ce que c'est que Nessus, ça fait quoi exactement ?
    Par PeterT dans le forum Développement
    Réponses: 3
    Dernier message: 24/07/2002, 11h23

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