Bonjour à tous !!

Voila mon arbre binaire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
assignment from incompatible pointer type
Voila le code correspondant :

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
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!