je pense qu'une partie consacrée aux arbres serait la bienvenue !!
- comment créer un arbre binaire ?
- quelles sont les fonctions de bases pour manipuler des arbres binaires ?
j'ai moi même besoin d'aide concernant les arbres en C notamment à cause des pointeurs et j'ai du mal à m'en sortir !
réponses aux 2 questions :
+ Un abre binaire est une suite de pointeurs, chaque pointeurs pointe une structure dans laquelle on peut mettre une valeur (int ou char par exemple) ainsi que 2 champs pointant les structures suivantes (appelées fils gauche et fils droit). En clair : un arbre généalogique est un arbre binaire à l'envers.
+ Voila les fonctions de base :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 struct elem{ char lettre; struct elem* fg; struct elem* fd; } t_noeud; typedef struct elem noeud; typedef struct elem *arbre;
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 boolean estvide(arbre a) {return a==NULL;} /*** A noter qu'en C le type booleen n'est pas defini il faut donc le definir auparavent comme ceci par exemple : #define FALSE 0 #define TRUE 1 typedef unsigned char boolean; ***/ arbre gauche(arbre a) {return a->fg;} arbre droit(arbre a) {return a->fd;} char valeur(arbre a) {return a->lettre;} arbre cons(char c, arbre filsg, arbre filsd) { arbre p; p=(arbre)malloc(sizeof(noeud)); p->lettre=c; p->fg=filsg; p->fd=filsd; return p; } /*** Cette fonction sert a construire un arbre exemple : cons(T,cons(A,NULL,NULL),cons(W,NULL,NULL)); ici T pointe vers A vers la gauche et W vers à droite, A et W pointant vers NULL pour signaler la fin de l'arbre. ***/
Partager