Réponse acceptée !
J'ai finalement compris ton dessin.
Cet exercice est pas facile du tout.
Déjà, ta structure est inutilement compliqué. Tu as juste besoin de ceci:
Code C/C++ :
typedef struct s_tree
{
char info;
struct s_tree *fg;
struct s_tree *fd;
} s_tree;
s_tree* tree;
Ensuite voici la méthode que tu dois utilisé:
- Il faut clairement le faire en récursif, si tu ne veux pas t'arrache les cheveux. Il te suffit d'analyser les chaînes, et de trouver les pivots.
Par exemple: voici l'arbre que tu as avec les chaînes:
Code :
b o n j o u r c a v a
j n o o b u c r v a a
b
/ \
o u
/ \
n r
/ \ / \
j o c a
/ \
v a
Analysons les chaînes. Le premier caractère de la première chaîne te donne le pivot, que tu peux rechercher dans la second chaînes:
Code :
[b] o n j o u r c a v a
j n o o [b] u c r v a a
Donc
Code :
b (gauche)
o n j o
j n o o
et
b (droite)
u r c a v a
u c r v a a
Tu relances récursivement ceci jusqu'à arriver sur un cas simple:
Code :
Tu arrives alors sur:
Code :
n (gauche)
j
j
n (droite)
o
o
Tu sais alors que tu vas pouvoir insérer un noeud j à gauche du noeud n et un noeud o à droite du noeud n.
A la remonté, ton arbre va se construire.
En soi l'exercice n'est pas si dur, trouver cette idée l'a été !!!