LR在AVL树中

时间:2013-12-27 17:38:30

标签: c++ avl-tree

我只是处理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:/我不明白。任何人

2 个答案:

答案 0 :(得分:0)

如果使用调试器c不为零且程序在获得分段错误时c->right不为零,则检查您正在调试的程序是否已正确编译。

观察相关变量的值,并逐步执行,直到变量生效。

答案 1 :(得分:0)

我的LR功能参数是一个参考,所以我失去了这些原因:D c-> _parent-> _left与c:D相同所以我基本上这样做了:c = c-&gt ; _right:D现在我已经纠正了它。