Bonjour a tous

Je voudrais implémenter un tri en utilisant des arbres binaires de recherche. J'ai donc créé une liste chainée comportant une structure arbre. Mais j'ai des problèmes de pointeur dès que je veux ajouter un élément.
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
52
53
54
55
56
57
58
59
60
61
62
 
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
 
typedef struct Noeud
{
	int valeur;
	struct Noeud* filsGauche;
	struct Noeud* filsDroit;
}Noeud;
typedef Noeud* Arbre;
 
void Ajouter(int valeur,Arbre* arbre)
{
	//on construit le nouveau noeud
	Arbre nouveau = (Arbre)malloc(sizeof(Noeud));
	nouveau->valeur = valeur;
	nouveau->filsDroit= NULL;
	nouveau->filsGauche = NULL;
 
	//on le place
	Noeud* courant = (Arbre)malloc(sizeof(Noeud));
	Noeud* precedent = NULL;
 
	if(*arbre == NULL)
	{
		*arbre = (Arbre)malloc(sizeof(Noeud));
		*arbre=nouveau;
	}
	courant=*arbre;
	precedent = (Arbre)malloc(sizeof(Noeud));
 
	while (courant)
	{
 
		precedent = courant;
 
		if(nouveau->valeur < courant->valeur)
 
			courant = courant->filsGauche;
 
		else
			printf("%d",courant->valeur);
			courant = courant->filsDroit;
	}
 
	//maintenant qu'on a trouve une place libre on place correctement le nouveau noeud
	if(noeud->valeur < precedent->valeur)
		precedent->filsGauche = noeud;
	else
		precedent->filsDroit = noeud;
 
}
 
int main()
{
        Arbre arbre=NULL;
	Ajouter(15,&arbre);
	Ajouter(2,&arbre);
        return 0;
}
le premier élement est bien ajouté mais j'ai une erreur de segmentation pour le deuxieme noeud.

Mon probleme est sans doute simple a résoudre mais je débute.