2017-07-27 65 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 
} 

这应该每次递归更新后的价值,不同于当前的代码。

相关问题