2017-07-27 64 views
0

我必須編寫一個函數來查找第一個孩子級別中的節點數 - 下一個兄弟元素N元樹。 我的功能是:第一個孩子級別的節點數 - 下一個兄弟樹

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); 
} 

但它不起作用。 有人可以幫我嗎?謝謝。

+1

*但它不起作用*它應該如何工作?它是如何工作的? –

+0

你能解釋一下爲什麼在計算與nextSibling相關的節點數量時遞減'level'? –

+0

什麼不行?什麼是'水平'? NTree'的結構是什麼?請閱讀[我如何提出一個好問題?](https://stackoverflow.com/help/how-to-ask)和[如何創建一個最小,完整和可驗證的示例](https:// stackoverflow。 COM /幫助/ MCVE)。 – Rabbid76

回答

0

現在,你的代碼似乎只返回2.我相信這是你正在嘗試做的:

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 
} 

這應該每次遞歸更新後的價值,不同於當前的代碼。

相關問題