Arbres binaires / Pointeurs
Bonjour à tous !!
Voila mon arbre binaire :
Code:
1 2 3 4 5 6 7 8 9 10 11
| typedef struct noeud NOEUD;
typedef struct {
int nb;
} noeudG ;
struct noeud {
int nb;
NOEUD* fd;
noeudG* fg;
}; |
(Il n'y a jamais de fils pour les fils de gauche)
J'essai de faire un ajout, mais je tombe sur un
Citation:
assignment from incompatible pointer type
Voila le code correspondant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| NOEUD *arbre;
void ajouter_arbre(NOEUD* nd)
{[...]
if (arbre != NULL) /* Si l'arbre n'est pas vide */
{
if (arbre->fd == NULL) /* Un seul noeud */
{
if (arbre->nb > nd->nb)
{
arbre->fg->nb=arbre->nb;
arbre->fd=nd;
}
else
{
arbre->fd=arbre;
arbre->fg->nb=nd->nb;
}
arbre->nb=arbre->nb+nd->nb;
}
}
} |
Ce que je veux faire :
Si il n'y a qu'une valeur (donc sans fils), si elle est supérieure à nd->nb, alors
nd->nb va être le fils droit du noeud et ce qui était avant le seul noeud va devenir le noeud gauche.
Ensuite le 1er noeud, fais la somme des noeuds gauche + droite.
Merci pour votre aide!