函数在return语句后不停止执行

0 c++ return function

我正在使用 C++ 并编写了一个函数,但它不会在 return 语句之后停止执行。

BSTNode* search(BSTNode* root, int data)
{
    BSTNode* newroot=root;
    int count = 1;
    if (root->data == data)
    {
        newroot=root;
        count = 0;
    }
    else
    {
        search(root->left, data);
        if (count != 0)
            search(root->right, data);
    }
    return newroot;
}
Run Code Online (Sandbox Code Playgroud)

返回值后如何使其停止执行?

Rem*_*eau 5

你的count变量没用,应该删除。递归调用search()不更新它,所以if (count != 0)总是被评估为真。

您还忽略了递归search()调用的返回值以在找到匹配节点后停止搜索。

并且您忽略了树中存在空指针的可能性。

尝试更像这样的事情:

BSTNode* search(BSTNode* root, int data)
{
    if (!root)
        return nullptr;

    if (root->data == data)
        return root;

    BSTNode *node = search(root->left, data);
    if (!node)
        node = search(root->right, data);

    return node;
}

Run Code Online (Sandbox Code Playgroud)