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

我正在使用 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;
}

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

回答

你的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;
}


以上是函数在return语句后不停止执行的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>