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.

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;
+ Voila les fonctions de base :

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.
***/