函数在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;
}