警告C4715:并非所有控制路径都返回值c ++

时间:2014-10-11 12:48:11

标签: c++ treenode red-black-tree

我做了两个函数,一个用于查找并返回红黑树中的最小键,另一个用一个节点的键作为输入返回指向特定节点的指针。这些函数适用于所有节点除了具有最高键和最低键的节点。程序停止工作并发出C4716警告。 钥匙是 int array [] = {50,26,45,34,23,78,84,93,14,16,100,57,62};

int Tree::findsmallest()
{
return  findsmallestprivate(root);
}

int Tree::findsmallestprivate(node* ptr)
{
if (root != NULL)
{
    if (ptr->left != NULL)
    {
        findsmallestprivate(ptr->left);
    }
    else
    {
        return ptr->key;
    }
}
else
{
    cout << "There was no tree" << endl;
    return -1;
}
} 
Tree::node* Tree::returnnode(int key)
{
return returnnodepri(key, root);
}
Tree::node* Tree::returnnodepri(int key, node* ptr)
{
    if (ptr->key == key)
    {
        return ptr;
    }
    else if (ptr->key < key)
    {
        returnnodepri(key, ptr->right);
    }
    else if (ptr->key > key)
    {
        returnnodepri(key, ptr->left);
    }
else
{
    return NULL;
}
}

2 个答案:

答案 0 :(得分:1)

if (ptr->left != NULL)中,您无法返回值,正如编译器所说。您需要返回一个值。

答案 1 :(得分:0)

findsmallestprivate

如果条件ptr->left != NULL成立,则不返回任何内容。您只需运行findsmallestprivate(ptr->left);然后退出,但不会返回预期的int

warning C4715: not all control paths return a value表示您有一个函数,有时可能无法根据其输入返回值。

您的其他问题与findsmallestprivate相同。

returnnodepri

如果是ptr->key < keyptr->key > key,则不会返回预期的Tree::node*。您运行returnnodepri,但不会返回任何值。