Bonjour,
je début dans les arbres n-aire mais je n'arrive pas a trouver la solution pour afficher mon arbre, voici mon code :


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
typedef struct arbre Arbre;      
struct arbre      
{      
    int val;      
    Arbre *frere;      
    Arbre *enfant;      
};      
 
typedef struct pile Pile;      
struct pile      
{      
 Arbre *monArbre;      
 Pile *suivant;      
};      
 
void afficheArbre2(Arbre t, Pile p){      
 Pile *tempPile=&p;      
 printf("\nValeur de l'arbre: %i",t.val);      
 //si je suis un noeud on le place dans la pile      
 if((t.frere!=NULL)&&(t.enfant!=NULL)){      
  if(p.monArbre==NULL){      
   p.monArbre=&t;      
  }else{      
   while(tempPile->suivant!=NULL){      
    tempPile=tempPile->suivant;      
   }      
   tempPile->monArbre=&t;      
  }      
 }         
 if(t.frere!=NULL){      
  afficheArbre2(*t.frere,p);      
 }else if(t.enfant!=NULL){      
  afficheArbre2(*t.enfant,p);      
 }      
}   
 
int main(void){
    Arbre I = {9, NULL, NULL};
    Arbre H = {8, &I, NULL};
    Arbre G = {7, &H, NULL};
    Arbre F = {6, NULL, &G};
    Arbre E = {5, NULL, NULL};
    Arbre D = {4, &E, NULL};
    Arbre C = {3, NULL, &F};
    Arbre B = {2, &C, &D};
    Arbre A = {1, NULL, &B};
 
    Pile p = {NULL,NULL};
    afficheArbre2(A,p);
    return 0;
}

et comme résultat j'ai 1 2 3 6 7 8 9
je sais qu'il faut faire du backtracking mais je n'y arrive pas voila.
Merci pour votre aide.