我只是在处理AVL树、insert、delete和其他方法,所以现在,当节点不是根(也就是节点的父节点不等于0)时,我的左旋转出现了问题。所以,我的方法的一部分,实际上它的正确开头是这样的:
void LR (Node* &c)
{
if (c->_parent != 0)
{
if ( c == c->_parent->_left)
{
c->_parent->_left = c->_right;
}
else
c->_parent->_right = c->_right;
c->_right->_parent = c->_parent;
}
etc. etc.所以,当我有一个节点c,它有键389,父非零和右子非零,有一个键等于390时,我的代码转储并在这个实例之后写到:
c->_parent->_left = c->_right;我的右子c->_right变为空:/我不明白。有人吗?
发布于 2013-12-27 18:27:38
如果使用调试器时,c不是零,c->right不是零,那么程序就会出现分段错误,然后检查正在调试的程序是否已正确编译。
观察相关变量的值变化,并逐步通过,直到变量变为有效。
https://stackoverflow.com/questions/20805196
复制相似问题