从AVL树中删除父级
Remove Parent from AVL Tree
我一直在处理AVL树的编码任务的这一部分。我们应该从AVL树中删除成员。我已经能够处理掉树上叶子的所有其他情况。我的问题是当移除树的头叶(或父叶?)时该怎么办。
为了简单起见,我正试图从树中删除B。在类的结构中,我可以访问父级以及左右子级。
B
/
A C
我有一个计算前置项的方法,在这种情况下是a。Node是要删除的节点(B)从那里开始,我正在尝试这个代码,但不断得到segfault。这遵循了我用来移除树上其他叶子的通用代码。
successor->right = node->right;
node->right->parent = successor;
successor->parent = NULL;
node = NULL;
delete node;
首先,以下两行按照编写顺序没有多大意义:
node = NULL;
delete node;
删除NULL是一个无操作。你可能是想把这些台词改过来。至于你的segfault,我在你发布的代码中没有看到任何会导致崩溃的内容;它可能发生在代码的其他地方。
对于AVL删除有许多有用的教程。AVL Trees上的维基百科页面包含了如何处理删除的分步说明。我也很喜欢阅读关于永恒困惑的教程。还有很多,谷歌会发现。此外,如果你有文本,请查阅你的文本。
相关文章:
- 将数组的地址分配给变量并删除
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C/C++编译器通常会删除重复的库吗
- 从链接列表c++中删除一个项目
- C++如何通过用户输入删除列表元素
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 使用函数"remove"删除重复元素
- 如何从多映射中删除特定的重复项
- 运算符C++ "delete []"仅删除 2 个前值
- 从 AVL 树中删除指向 1 个或多个值的键
- 如何修复重新平衡时AVL删除操作中的分段错误?
- AVL二进制树旋转和删除树的C 问题
- 在 avl 树中实现删除过程
- AVL树中的删除
- 为什么是我的AVL树删除功能不平衡
- 从AVL树中删除父级
- AVL树中节点删除值异常