Bonsoir à tous.
Et bonne année

Je vous écris car je dois insérer des mots dans un arbre, et ce, dans l'ordre alphabétique.
Pour cela j'ai donc créé une fonction permettant l'ajout de noeud (donc de lettre) dans l'arbre.
Mais j'ai quelques problèmes concernant cette fonction.

Pour info, "#" est le caractère fin de mot.
"AI" et "AS" sont des frères (même racine "A")
"BON" est le fils de "BO"

Voici le code de ma fonction:
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
noeud* ajouter_lettre (noeud *A, char c)
{
	noeud *O, *T, *R;
	O = malloc(sizeof(*O));
	O->lettre = c;
	O->frere = NULL;
	O->fils = NULL;
	int *i;
	i = 0;
 
	if (A->lettre == '#')                        //si on rencontre # on va alors créer un frere de ce mot
	{
		if (A->frere == NULL)                //s'il n y en a pas
		{
			A->frere = O;
		}
		else
		{
			A = A->frere;                //sinon on passe au frere de ce mot et on tente la même opération
			R = ajouter_lettre (A, c);
		}
	}
	else
	{
		if (A->lettre == c)                 //si on rencontre la lettre qu'on veut insérer, on arrête car la lettre est déjà présente dans l'arbre
		{
			R = A;
		}
		else
		{
			if (A->lettre < c)          //si on rencontre une lettre plus petite que celle que l'on veut insérer
			{
				T = A->frere;       //on décale le frere en insérant le nouveau noued
				A->frere = O;
				O->frere = T;
				R = O;
				i++;
			}
			else
			{
				if (i = 0)         //si on arrive tout de suite a une lettre plus grande que celle qu'on veut insérer
				                   //on décale le frere en insérant le nouveau noued
					O->lettre = A->lettre;
					O->frere = A->frere;
					O-fils = A->fils;
					A->lettre = c;
					R = ajouter_lettre (A, c);
				}
			}
		}
	}
	return R;
}
Voili voilà,
ça ne marche pas tout à fait comme il faudrait..
Et d'après les tests effectué cet après-midi, les autres fonctions ne seraient pas en causes.
Si quelqu'un arrivait à m'aiguiller, ça me sortirait de mon impasse.
Merci d'avance, et bonne soirée à tout le monde !!