我正在尝试实现 2-3 棵树,但在搜索要删除的节点时出现分段错误。代码如下:
p = root;
while (p!=NULL || p->k1!=kkey || p->k2!=kkey)
{
if (kkey < p->k1)
p = p->st;
else if (kkey > p->k1 && kkey < p->k2)
p = p->mid;
else
p = p->dr;
}
所以我正在尝试搜索包含 kkey 的节点。调试器告诉我,当我尝试检查是否找到键或我们仍在树中时,我遇到了分段错误。
您的while
状况看起来非常可疑。
假设p
是NULL
;while
仍然会尝试取消引用p->k1
并且会断位错误。
你的意思是说&&
("和")而不是||
("或")吗?