ABExp=pointeur sur noeud
=> Ca doit vouloir dire que tu dois pouvoir spécifier a = c*d par exemple.
Donc au debut tu aurais:
+
/ \
a b
Si tu dis que a = c * d tu aurais
+
/ \
* b
/ \
c d
Ci dessous voila un algo fait en C++, sans pouvoir le compiler donc propablement avec des erreurs, mais je pense que tu peux t'en inspirer pour faire ca en langage algorithmique. Si tu as des questions, n'hésite pas.
structure noeud {
val : élément
gauche : pointeur sur noeud
droite : pointeur sur noeud
}
int main void
{
noeud racine;
string expression = "(((a+b)/(c+d))+(e*f))";
creer_arbre (expression, racine);
}
int creer_arbre (string exp, noeud & racine)
{
int nb = 0;
for (i=0;i<exp.length;i++)
{
if (exp[i] == '(')
{
nb++;
}
else
if (exp[i] == ')')
{
nb--;
}
else
if (nb == 1)
{
racine.val = exp[i];
racine.gauche = new noeud ();
creer_arbre (substr (exp,1,i-1),racine.gauche);
racine.droite = new noeud ();
creer_arbre (substr (exp,i+1,exp.length-1),racine.droite);
}
}
}