Bonjour à tous !!
Voila mon arbre binaire :
(Il n'y a jamais de fils pour les fils de gauche)
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; };
J'essai de faire un ajout, mais je tombe sur unVoila le code correspondant :assignment from incompatible pointer type
Ce que je veux faire :
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; } } }
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!
Partager