Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1478 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Arbre binaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Arbre binaire

n°1272225
Pookiz
Posté le 23-12-2005 à 09:46:31  profilanswer
 

J'ai un problème que je n'arrive pas à résoudre. Il faut écrire une fonction en algorithmique qui prend en entrée un expression arithmétique complètement parenthésée et qui renvoie l'arbre binaire correspondant. Les seules opérations ont + - * /. Par exemple pour (a + b) ca renvoie un arbre de racine + de sous arbre gauche a et de sous arbre droit b. La structure est :  
structure  noeud {
                         val : élément
                         gauche : pointeur sur noeud
                         droite : pointeur sur noeud
                        }
C'est écrit qu'on peut aussi utiliser le type ABExp=pointeur sur noeud mais je ne sais pas ce que c'est!
Merci de m'aider

mood
Publicité
Posté le 23-12-2005 à 09:46:31  profilanswer
 

n°1272240
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-12-2005 à 09:57:59  profilanswer
 

fallait suivre tes cours avant d'aller en TD :spamafote:

n°1272241
Pookiz
Posté le 23-12-2005 à 09:59:41  profilanswer
 

désolé mais j'ai jamais fait ça en cours, je sais faire tout ce qui passe de l'arbre binaire à une expression arithmétique mais dans l'autre sens je sais pas

n°1272271
durkheim
Posté le 23-12-2005 à 10:28:17  profilanswer
 

C'est quoi une xepression arithmétique complèetement parenthésée?
 

n°1272297
Pookiz
Posté le 23-12-2005 à 10:41:14  profilanswer
 

c'est par exemple  
(((a + b) / (c + d)) + (e * f)) et alors là la racine de l'arbre d'est plus les sous arbre gauche c'est l'arbre représentant ((a + b) / (c + d))  et le droit c'est l'arbre représentant (e * f)

n°1272306
durkheim
Posté le 23-12-2005 à 10:45:00  profilanswer
 

AAAhhh ok, ca simplifie les choses.... bon je fais un algo et je le poste...

n°1272309
Pookiz
Posté le 23-12-2005 à 10:46:04  profilanswer
 

merci

n°1272321
durkheim
Posté le 23-12-2005 à 10:57:51  profilanswer
 

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);    
  }  
 
 }
}
 
 

n°1273456
Pookiz
Posté le 26-12-2005 à 21:06:58  profilanswer
 

j'ai juste une question très bete surement mais comme j'ai jamais fait de C ou de C++, qu'est-ce que ça veut dire quand on dit i++?

n°1273457
Arjuna
Aircraft Ident.: F-MBSD
Posté le 26-12-2005 à 21:13:09  profilanswer
 

i = i + 1
 
=> et ça retourne la nouvelle valeur de i

mood
Publicité
Posté le 26-12-2005 à 21:13:09  profilanswer
 

n°1273458
Arjuna
Aircraft Ident.: F-MBSD
Posté le 26-12-2005 à 21:13:39  profilanswer
 

++i ça fait pareil, mais ça retourne la valeur initiale de i (avant incrémentation)
 
on peut faire pareil avec --

n°1279298
_kal_
Posté le 08-01-2006 à 22:23:58  profilanswer
 

Je crois qu'il y a une petite ambiguité a soulever :
 
x = i++; x vaut alors la valeur de i avant incrémentation.
x = ++i; x vaut alors la valeur de i apres incrémentation.
 
Dans tout les cas, après l'instruction la valeur de i est bien incrémenté.

n°1279432
Arjuna
Aircraft Ident.: F-MBSD
Posté le 09-01-2006 à 09:39:52  profilanswer
 

Normalement c'est ça (vérifie quand même, parceque pour une affectation, c'est pas toujours évident)

n°1279734
_kal_
Posté le 09-01-2006 à 18:03:19  profilanswer
 

vivi c'est ça :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Arbre binaire

 

Sujets relatifs
[HTML] Arbre binaireArbre Binaire de Recherche générique
Fichier et arbre binairearbre non binaire
Arbre Binaire et leur rang :[Algo] Vérification de la parité d'un arbre binaire
Arbre binaire, trouver la profondeur d une node.Arbre binaire, comment copier tout les elements d un arbre dans ....
arbre naire en arbre binairebesoin d'aide sur arbre binaire
Plus de sujets relatifs à : Arbre binaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR