我只是处理AVL树,插入,删除和其他方法,所以现在我的左旋转有问题,当节点不是根(也就是节点的父不等于零)。所以,我的方法的一部分,实际上正确的开头是这样的:
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,我的代码转储,它说明在这个instr之后:
c->_parent->_left = c->_right;
我的右孩,c-> _right变为null:/我不明白。任何人
答案 0 :(得分:0)
如果使用调试器c
不为零且程序在获得分段错误时c->right
不为零,则检查您正在调试的程序是否已正确编译。
观察相关变量的值,并逐步执行,直到变量生效。
答案 1 :(得分:0)
我的LR功能参数是一个参考,所以我失去了这些原因:D c-> _parent-> _left与c:D相同所以我基本上这样做了:c = c-&gt ; _right:D现在我已经纠正了它。