Arbre à partir d'une expression fonctionnelle

Fermé
gdavis - 21 juin 2008 à 18:55
 Utilisateur anonyme - 21 juin 2008 à 20:48
Bonjour,

Merci tous pour les différentes contributiions me permettant de comprendre progressivement mon apprentissage autour dr mon ptit projet.

Je suis quand même buté encore à un point:

Quel principe utiliser pour construire un arbre à partir d'une expression de la forme fonctionnelle.

Une expression de la forme fonctionnelle est par exemple *(-(+(a,b),c),d) qui représente la forme infixée (((a+b)-c)*d).

Merci d'avance pour votre contribution.

1 réponse

Utilisateur anonyme
21 juin 2008 à 19:02
Il faut créer une fonction récursive qui va lire chaque caractère de ta forme fonctionnelle :
Si tu tombes sur un opérateur (/*-+) tu ajoutes un noeud à gauche.
Si tu tombes sur une variable : tu ajoutes une feuille à gauche si le noeud courant n'en possède pas, à droite s'il en possède et tu remontes d'un cran dans l'arbre (puisque les deux feuilles sont établies).
0
Bsoir d0o0b.


J'essaie un truc comme ci-dessous, çà me donne pas le résultat.

char main ()
{
Noeud *racine;

char c;
racine = NULL;


printf ("Etrer le aractère '#' pour terminer! ");
scanf (c);
while (c!='#') {
CreerArbre (&racine, c);
printf ("Etrer le aractère '#' pour terminer! ");
scanf (c);
}

void CreerArbre (Noeud ** racine, char c)
{
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, c);
else if (n > (*racine)->nb)
CreerArbre (&(*racine)->droite, c);
}

(Merci Lami 20j)

Merci d0o0b
0
Utilisateur anonyme > gdavis
21 juin 2008 à 20:48
J'y connais pas grand chose en C, mais je vois pas où se trouve le test des opérateurs dans ce programme.
De plus, il y a une conditionnelle qui porte sur la variable n dans CreerArbre() qui n'est initialiser que dans un autre bloc conditionnel, donc inaccessible.
0