Bon déjà un petit conseil général sur ton code, essaie de ne jamais mettre TOUT ton code dans un if ça le rend illisible.
Au lieu de faire
if (!condition)
{
/* code */
}
else
{
return code;
}
Tu devrais traiter les cas dégénérés en premier comme ça :
if (condition)
return code;
/* code */
bref revenons a ton problème :
en fait tu n'utilise pas la valeur de retour de ta fonction noeud.
Ta fonction retourne le nombre de noeuds de l'arbre passé en argument.
Un arbre a combien de nœuds ? Déjà il y a la racine donc ça fait 1, plus pour chaque fils le nombre de nœud que comporte l'arbre dont la racine est ce fils. Donc dans ton cas on aura un truc du genre :
int nb = 1;
for (ArbreN fils : a.fils)
nb += noeud(fils);
return nb;