二叉搜索树的搜索函数错误
Error in search function of binary search tree
struct node *search(struct node *root, int x)
{
if(root->key == x || root == NULL)
{
return root;
}
if(x < root->key)
{
return search(root->left, x);
}
else
{
return search(root->right, x);
}
}
当我搜索一个元素不在二叉搜索树时,我得到了一个分割错误。怎么了?
切换root->key == x
和root == NULL
,以利用||
操作符中的短路。您需要检查不是 null,并且只有在尝试从它获取属性时才可以。
现在,当您在没有子节点的节点上获得search
时会发生什么?你可以得到search(root->left, x);
或search(root->right, x);
,它们都相当于search(NULL, x);
。
此时,第一个if
语句变为if (NULL->key == x || NULL == NULL)
。
NULL->key
是对空指针的解引用,这会导致segfault
相关文章:
- "error: no matching function for call to"构造函数错误
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- 尝试将unique_ptrs推送到向量时使用纯虚拟函数错误
- C++ OpenCV 卡尔曼滤波器构造函数错误
- C++:用户定义的显式类型转换函数错误
- C++ 合并字符串以'system'函数错误
- C++ wmain 函数错误时使用 Unicode
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- C++ 中常量属性的初始化构造函数错误
- 线程 std::调用未知类型,无法专门化函数错误
- 表单显示对话框函数错误,并且不执行下面的语句
- 函数错误 C2059:语法错误:'>'不起作用
- STL向量上出现奇怪的复制构造函数错误
- C++ Visual Studio 重载函数错误:没有重载函数的实例与指定的类型匹配
- C++引用已删除函数错误
- 为什么通过带有文字编号的引用调用会出现"无匹配函数"错误?
- C++ 乘法定义的构造函数错误消息似乎错误
- 在 c++ 代码中将数组传递给函数错误
- FFMPEG avcodec_decode_video2函数错误代码
- 为什么我会收到转换函数错误