Arbre binaire

Fermé
maroo - 5 janv. 2009 à 13:42
mamiemando Messages postés 33333 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 31 octobre 2024 - 5 janv. 2009 à 14:32
Bonjour,cava tout le monde !
j'ai rencontré un problème dans la manipulation des arbres binaires !
par exemple je veut mettre les feuilles de l'arbre dans une liste chainée !!
j'ai essayé mais ça ne marche pas :

liste creation_liste(arbre a,liste *l)
{
if(a==NULL)
return NULL;
if((a->gauche==NULL)&&(a->droit==NULL))
{
(*l)=malloc(sizeof(element));
(*l)->v=a->val;
(*l)->suiv=creation_liste(a->gauche,&((*l)->suiv));
return *l;
}

return creation_liste(a->gauche,l);
return creation_liste(a->droit,l) ;

}

s.v.p !j'ai besoin de votre aide !
urgent

1 réponse

mamiemando Messages postés 33333 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 31 octobre 2024 7 800
5 janv. 2009 à 14:32
Ben une fonction en C ne peut retourner qu'une chose à la fois, ça n'a donc pas de sens de mettre deux return à la suite (seul le premier sera exécuter). Si tu veux renvoyer les deux éléments, il faut renvoyer une structure qui stocke les deux éléments.

Ça ressemblerait donc plutôt à :
struct paire_liste{
  liste l1;
  liste l2;
};

struct paire_liste creation_liste(arbre a,liste *l){
  struct paire_liste p;
  ...
  p.l1 = creation_liste(a->gauche,l);
  p.l2 = creation_liste(a->droit,l);
  return p;
}

Bonne chance
0