From: Jérôme Benoit Date: Mon, 3 Apr 2017 12:29:10 +0000 (+0200) Subject: TP6 n ary tree: fix the insert function X-Git-Url: https://git.piment-noir.org/?p=Algorithmic_C.git;a=commitdiff_plain;h=ad2be507a5c4530c50d7b2b97e1bbaaff840892a TP6 n ary tree: fix the insert function Signed-off-by: Jérôme Benoit --- 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)