当我搜索上述问题时,我得到了一个答案Yes
。是一个二叉树的二叉树吗?
一个完整的二进制树的定义如下:
完整二进制树(有时适当二叉树或2-树)是一个树,其中除叶子之外的每个节点有两个孩子。
但问题是,这个属性可能不能满足我每次构建的顺序2.
B树例如时间:
插入10,17,45中顺序B树2
,我们得到的是结构
10
17
45
这不是一个完整的二叉树。
那么为什么说它是一个二叉树的二叉树?
当我搜索上述问题时,我得到了一个答案Yes
。是一个二叉树的二叉树吗?
一个完整的二进制树的定义如下:
完整二进制树(有时适当二叉树或2-树)是一个树,其中除叶子之外的每个节点有两个孩子。
但问题是,这个属性可能不能满足我每次构建的顺序2.
B树例如时间:
插入10,17,45中顺序B树2
,我们得到的是结构
10
17
45
这不是一个完整的二叉树。
那么为什么说它是一个二叉树的二叉树?
对于B树而言,术语“订单”的定义很差,几乎没有用处......每个人都以不同的方式使用该术语。对于任何种类的B树,节点中指针的数量由该节点中的键的数量决定。如果密钥的数量是k,则指针的数量是k + 1,周期。关于指针的数量是没有选择的,因为在其他类型的树中可能存在。一个节点中的所有指针都是零(在单级“树”中的根,树叶),或者全部都是有效的,没有中间的,也没有混合。
其次,为了使B树能够正常工作,需要在键的数量上进行选择。这意味着最小的可能的B树节点是具有一个或两个键(因此有两个或三个指针)的节点。这基本上是一个(2,3)树,据说这正是B树如何被发明 - 作为(2,3)树的泛化。
插入钥匙10,17和45到可能的最低阶的空B-树会是这样的:
[]
[10]
[10 17]
[17]
[10] [45]
最终的结果确实发生,看起来像一个平衡二叉树。
但是,由于上述原因,在您似乎使用该术语(每个节点最多两个指针)的意义上,没有2阶B树。将多个密钥插入这样一个退化的B树时,不可能保持B树不变量。
注意:有许多B树变种可以暂时或甚至永久地破坏经典B树的结构不变量,主要用于实现性能目标,简化维护或实现特殊属性,少并发操作。尽管它们的名字中可能包含“B树”,但这些不会被视为适合本次讨论的B树。
请问你能否提供哪些是因为上述原因'''有没有再次请求2号B树的事情? –
@Dragos:在2阶B树(在OP使用的意义上,即每个节点最多2个指针)中,每个节点最多只有一个关键字。再加上所有节点(除了空树的根部)必须至少有一个密钥这一事实,我们得出每个节点只有一个密钥的事实。因此,您有一棵二叉树,而不是一棵B树。一棵B树需要在每个节点的键数量中摆动才能运行,而实现此目的的最小节点大小是一个节点,它可以保持1或2个键(因此也可以是2或3个指针),即由OP的推算得出的顺序3。 – DarthGizka
您展示的10,17,45 B-Tree不是B树。 B-树是自我平衡的树,而且树不平衡。 –
我的插入有问题吗? –
是的,的确是 –