删除B树节点
Deleting a node from B tree
min no of keys = 2最大键数= 5
P
CL TX
AB DEJK NO QRS UV YZ
删除键D:
CLPTX
AB EJK NO QRS UV YZ
这个答案是根据Introduction to Algorithms by thomas H . Cormen
p . no 501
它说:这是情况3b:递归不能下降到节点CL因为它只有两个键所以我们需要将p下推并将其与CL和TX合并形成CLPTX n我们从叶子(情况1)中删除D
但我认为这个答案也很好:
P
CL TX
AB EJK NO QRS UV YZ
因为叶节点EJK仍然有3个键满足最小键约束。
请解释一下
删除算法是从上到下,因此它无法知道叶子是否足够。
为了确保算法每次都有效,决定从顶部开始合并具有最小键值(但合法)的单元格。这是因为如果树叶需要父母的"捐赠",他们的父母将能够提供它们。
注意:我说"叶子"是为了简化,但它也适用于沿途的每个细胞。
note2:这就是为什么在insert
中你做相反的事情,即使在特定的情况下你可能不需要。
相关文章:
- 重载运算符>>从二叉树中删除节点
- C++ 从二叉搜索树中删除具有两个子节点的特定节点
- 二叉树,从树中删除节点后将其删除
- 在二进制搜索树中删除节点
- 如何从二进制搜索树中删除节点
- 从C++二进制搜索树中删除一个节点(类而非结构)
- 从基于矢量的二叉搜索树中删除节点的最佳方法
- 二进制树搜索删除节点复杂性
- 很难从我的二进制搜索树中删除一个节点
- 从二进制搜索树中删除只有一个孩子的节点
- 有没有一种方便的方法可以从属性树中删除节点,同时保留其子节点
- 函数从二进制搜索树中删除具有给定值的节点
- C++ 当节点有两个子节点时,从树中删除该节点
- 从二叉搜索树中删除节点
- 从二叉搜索树中删除节点
- 在树节点的派生类中删除dynamic_cast
- 从二叉搜索树中删除节点
- 删除B树节点
- 试图从二叉搜索树中删除一个节点
- AVL树中节点删除值异常