Bonjour ! Je suis étudiant en info et en ce moment on travail sur ... vous l'avez deviné, les arbres binaires de recherche !

je me casse les dents sur l'agorithme d'insertion d'un noeud, en TD on fait ce code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
P_un_noeud_abr inserer_noeud_abr(P_un_noeud_abr pabr, P_un_noeud_abr pn)
    {
    if(!pabr)
          return pn;
 
      if(comparer_val(pabr->val, pn->val)>0) // pabr->val> pn->val
          pabr->gauche= inserer_noeud_abr(pabr->gauche, pn);
      else
          pabr->droit= inserer_noeud_abr(pabr->droit, pn);
    }
Ca marche très bien pour insérer un élément à la racine, mais dès que je veux atteindre une hauteur de 2 ca foire et ca remplace la valeur à la hauteur 1.

voici la définition de la struture P_un_noeud_abr

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
    typedef struct _un_noeud_abr *P_un_noeud_abr;
 
    typedef struct _un_noeud_abr
        {
        Tval val;
        P_un_noeud_abr gauche;
        P_un_noeud_abr droit;
        } Un_noeud_abr;
Si besoin voici un lien vers un tar contenant les fichiers sources ainsi que le Makefile de ce tme http://dl.free.fr/aqJeA4hVT
(la fonction inserer_noeud est bourrée de printf parceque je voulais voir son déroulement pour comprendre ou ca buggait)
Malgré les infos trouvé ici :http://www.developpez.net/forums/d33...ire-recherche/, je m'en sors toujours pas !
Merci d'avance pour l'aide !!