控制到达非无效函数的结尾

时间:2018-08-12 05:47:30

标签: c++

关于以下代码:

public: int TreeWidth(struct node *root, int level)
{
    if (root == NULL) {
        return 0;
    }
    if (level == 1) {
        return 1;
    }
    if (level > 1) {
        return TreeWidth(root->Left_link, level - 1) +
            TreeWidth(root->Right_link, level - 1);
    }
}

有人可以解释一下为什么我收到标题中提到的错误吗?

1 个答案:

答案 0 :(得分:5)

如果level小于1并且root不是NULL,则不会返回任何值。您需要返回每个可能的代码路径的值。

可能最简单的修复方法是,假设您永远不会通过小于一的级别(即,树的最高级别),请稍作修改:

public:

int TreeWidth(struct node *root, int level) {
    if ((root == NULL) || (level < 1) return 0;
    if (level == 1) return 1;
    return TreeWidth(root->Left_link, level - 1) + TreeWidth(root->Right_link, level - 1);
}