LR in AVL trees

LR in AVL trees

本文关键字:trees AVL in LR      更新时间:2023-10-16

我只是在处理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不为零,并且在程序出现分段错误时c->right不为零,请检查您正在调试的程序是否已正确编译。

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

我的 LR 函数参数是一个参考,所以这就是为什么我失去了 adreses :DC->_parent->_left 与 C 相同:D所以我基本上这样做了:c = c->_right :D现在我已经纠正了它,它就可以工作了。