LR in AVL trees
LR in AVL trees
我只是在处理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现在我已经纠正了它,它就可以工作了。
相关文章:
- 为什么我们要为avl树实现返回一个指向节点的指针,而不是void函数
- 使用非递归插入方法实现 AVL 树
- 从 AVL 树中删除指向 1 个或多个值的键
- 如何过滤avl树的数据
- 如何修复重新平衡时AVL删除操作中的分段错误?
- 如何在 c++ 中实现 avl 树,每个节点都是另一个 avl 树
- 按顺序遍历 AVL 树,将值保存在数组中
- AVL 树是否可以对不同节点中的键具有相同的值?
- 如何在这个哈希映射中实现 AVL 树
- 将文本文件单词插入 AVL
- LeetCode #617 "Merge Two Binary Trees"使用C++
- 如何测试AVL树的自定义实现
- AVL树C 的Ostream操作员
- AVL树插入方法导致分割故障
- AVL二进制树旋转和删除树的C 问题
- AVL 树旋转问题
- 按级别(C )打印AVL树级别
- 在 avl 树中实现删除过程
- 实现导致分段错误的 avl 树
- LR in AVL trees