关于以下代码:
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);
}
}
有人可以解释一下为什么我收到标题中提到的错误吗?
答案 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);
}