2017-07-27 1 views
0

Je dois écrire une fonction pour trouver le nombre de nœuds dans un niveau d'un premier enfant - l'arbre N-aire voisin. Ma fonction est:nombre de nœuds pour un niveau dans un premier enfant - prochain arbre

int nodesAtLevel(NTree root, int level) { 
    if (root == NULL) { 
     return 0; 
    } 
    if (level == 0) { 
     return 1; 
    } 
    return nodesAtLevel(root->firstChild, level - 1) + nodesAtLevel(root->nextSibling, level - 1); 
} 

mais il ne fonctionne pas. Quelqu'un peut-il m'aider? Merci.

+1

* mais cela ne marche pas * Comment ça marche? Comment ça ne marche pas? –

+0

Pouvez-vous expliquer pourquoi vous décrémentez 'level' lors du calcul du nombre de nœuds associés à' nextSibling'? –

+0

Qu'est-ce qui ne fonctionne pas? Qu'est-ce que 'level'? Quelle est la structure de 'NTree'? Veuillez lire [Comment poser une bonne question?] (Https://stackoverflow.com/help/how-to-ask) et [Comment créer un exemple minimal, complet et vérifiable] (https: // stackoverflow. com/help/mcve). – Rabbid76

Répondre

0

En ce moment, votre code semble revenir seulement 2. Je crois que c'est ce que vous essayez de faire:

int nodesAtLevel(NTree root, int level) { 
    if (root == NULL) { 
     return 0; 
    } 
    if (level == 0) { 
     return 1; 
    } 

    int x = nodesAtLevel(root->firstChild, level - 1); 
    int y = nodesAtLevel(root->nextSibling, level - 1); 

    return x + y + 1; //add 1 for current node 
} 

Cela devrait mettre à jour la valeur après chaque récursion, contrairement à votre code actuel.