bool search(double x, TreeNode *t)
{
if (t->value == x)
return true;
else if (x < t->value)
search(x, t->left);
else if (x > t->value)
search(x, t->right);
return false;
bool search(double num)
{
TreeNode *ptr = root;
return search(num, ptr);
}
具有2个参数的搜索函数是二叉树类的私有成员函数,它使用递归来搜索值。调用另一个搜索函数来调用递归函数。此代码不起作用。我已经显示了递归函数的值,它没有返回0或1.我不知道为什么。此外,如果我发送的值不在树中,程序会崩溃,所以我没有任何错误可以帮助我。
答案 0 :(得分:1)
如果找不到元素,您的递归永远不会停止
如果在根目录中找到它,则返回true
如果在其他地方找到它,则返回false
。
你需要
像
bool search(double x, const TreeNode *t)
{
if (t == nullptr)
return false;
else if (t->value == x)
return true;
else if (x < t->value)
return search(x, t->left);
else
return search(x, t->right);
}
或
bool search(double x, const TreeNode *t)
{
return t != nullptr
&& ( t->value == x
|| (t->value < x && search(x, t->left))
|| (t->value > x && search(x, t->right)));
}