From ad2be507a5c4530c50d7b2b97e1bbaaff840892a Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Mon, 3 Apr 2017 14:29:10 +0200 Subject: [PATCH] TP6 n ary tree: fix the insert function MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- TP6/arbres/arbre_n_aire/arbre_n_aire.c | 27 +++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/TP6/arbres/arbre_n_aire/arbre_n_aire.c b/TP6/arbres/arbre_n_aire/arbre_n_aire.c index bfed52c..795aa63 100644 --- a/TP6/arbres/arbre_n_aire/arbre_n_aire.c +++ b/TP6/arbres/arbre_n_aire/arbre_n_aire.c @@ -55,27 +55,28 @@ NOEUD *insere_fin(char *mot, int i) /* Insertion d'un mot dans l'arbre ******************************************/ /* (on respecte l'ordre lexicographique des freres)**************************/ -NOEUD *_insere(NOEUD * p, char *mot, int i) +NOEUD *insere(NOEUD * p, char *mot, int i) { /* i est l'indice de la lettre courante dans le mot */ if (p == NULL) { return insere_fin(mot, i); + } else if (p->lettre == mot[i]) { + if (mot[i]) { + p->fils = insere(p->fils, mot, i + 1); + } else { + printf("The word is already here\n"); + } + } else if (p->lettre > mot[i]) { + NOEUD *p1 = insere_fin(mot, i); + p1->frere = p; + p = p1; + } else { + p->frere = insere(p->frere, mot, i); } - if (mot[i] > p->lettre) { - return _insere(p->frere, mot, i); - } else if (mot[i] == p->lettre) { - return _insere(p->fils, mot, i + 1); - } else if (mot[i] < p->lettre) { - return _insere(p->fils, mot, i); - } -} - -NOEUD *insere(NOEUD * p, char *mot, int i) -{ - p = _insere(p, mot, i); return p; } + /*****************************************************************************/ /* Affichage par ordre alphabetique de tous les mots stockes dans l'arbre */ void affiche(NOEUD * p, char *mot, int i) -- 2.34.1