Bonjour,

Je travaille actuellement sur les arbres binaires de recherche mais malheureusement après compilation on m'affiche segmentation fault . Je ne connais pas l'origine de l'erreur mais c'est probablement du à ma fonction insertion qui n'insère aucune valeur:


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
54
55
56
57
58
59
60
void abr::inserer(int y)
{
    if(racine==NULL)
    {
          racine->cle=y;
    }
 
    else
    {
        inserer(y,racine);
    }
}
 
void abr::inserer(int y, noeud * p)
{
 
    if(p!=NULL)
    {
        if(y < p->cle && p->fg!=NULL)
        inserer(y,p->fg);
 
        if(y > p->cle && p->fd!=NULL)
        inserer(y,p->fd);
    }
 
 
 
    if(y > p->cle)
    {
        if(p->fg!=NULL)
        {
            noeud * tmp = new noeud;
            tmp->fg=p->fg;
            tmp->cle=y;
            tmp->fd=NULL;
        }
 
        else
        {
            p->fg->cle=y;
        }
    }
 
    if(y<p->cle)
    {
        if(p->fd!=NULL)
        {
            noeud * tmp = new noeud;
            tmp->fd=p->fd;
            tmp->cle=y;
            tmp->fg=NULL;
        }
 
        else
        {
            p->fd->cle=y;
        }
 
    }
}



voici mon constructeur et mon destructeur de mon arbre binaire de recherche:


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
 
//constructeur
abr::abr()
{
    racine=NULL;
}
 
//destructeur utilisant la fonction récursive suppression
abr::~abr()
{
    if(racine!=NULL)
    suppression(racine);
}
 
//fonction récursive suppression
void abr::suppression(noeud *p)
{
    if(p==NULL) return;
    if(p->fg!=NULL)
        suppression(p->fg);
        p->fg=NULL;
    if(p->fd!=NULL)
        suppression(p->fd);
        p->fd=NULL;
    delete p;
}


Je vous remercie pour toute éventuelle aide.