0

我必须编写一个函数来查找第一个子级的节点数 - 下一个兄弟 N-ary 树。我的功能是:

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

但它不起作用。有人能帮我吗?

4

1 回答 1

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
}

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

于 2017-07-31T23:34:19.753 回答