【发布时间】:2013-12-27 17:38:30
【问题描述】:
我只是在处理 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,我的代码转储并在此指令之后显示:
c->_parent->_left = c->_right;
我的右孩子,c->_right 变为空:/ 我不明白。有人吗?
【问题讨论】:
-
使用调试器解决问题。
-
我做到了,它显示相同。我在那条指令之后删除了 c->_right ! :(