Data structures 这正是2-3树的定义

Data structures 这正是2-3树的定义,data-structures,tree,b-tree,Data Structures,Tree,B Tree,对不起,我不能发布图片,所以我用键盘打印 [6:-] [2:4] [8:-] [0:1] [2:3] [4:5] [6:7] [8:9] 这是《数据结构与算法》中的一个,它是2-3树的图片,可以看到父节点上的每个数据都必须在其子节点上 [

对不起,我不能发布图片,所以我用键盘打印

                             [6:-]

               [2:4]                        [8:-]      

     [0:1]     [2:3]    [4:5]         [6:7]       [8:9]
这是《数据结构与算法》中的一个,它是2-3树的图片,可以看到父节点上的每个数据都必须在其子节点上

                             [50:90]

      [20:-]                 [70:-]                  [120:150]

[10:-]    [30:40]       [60:-]    [80:-]    [100:110]   [130:140]   [160:-]  

这本书来自另一本书《数据抽象和C++问题解决》,父节点上的数据不在子节点上。

                             [50:90]

      [20:-]                 [70:-]                  [120:150]

[10:-]    [30:40]       [60:-]    [80:-]    [100:110]   [130:140]   [160:-]  

哪一个是正确的?

这两个都是2-3棵树,因为“2-3”只是指每个节点的子节点数。但是这些树有不同的更具体的名字

第一种方法称为“B+树”,父母从孩子们那里复制密钥:

第二个,其中父键不是副本,称为“B树”:

请注意,通常存在与键关联的值,在B+树中,内部节点不包含值

对于文件系统支持的数据库索引,B+树非常流行。由于内部节点不包含值,因此它们可以具有更高的扇出,从而降低树的高度并加快访问速度


通常,叶节点实际上也不存储值——它们存储指向存储值的位置的指针,这方便地为B+树的叶节点提供了与内部节点完全相同的结构。

它们都是2-3棵树,因为“2-3”只是指每个节点的子节点数。但是这些树有不同的更具体的名字

第一种方法称为“B+树”,父母从孩子们那里复制密钥:

第二个,其中父键不是副本,称为“B树”:

请注意,通常存在与键关联的值,在B+树中,内部节点不包含值

对于文件系统支持的数据库索引,B+树非常流行。由于内部节点不包含值,因此它们可以具有更高的扇出,从而降低树的高度并加快访问速度


通常,叶节点实际上也不存储值——它们存储指向存储值的位置的指针,这方便地为B+树的叶节点提供了与内部节点完全相同的结构。

它们可能都是有效的。最上面的一个允许重复(只需将它们放在右边的子树上)。底部的一个没有任何副本,但没有显示如何处理副本。您可以对2-3树进行编码以拒绝重复值,在这种情况下,顶层树将无效。这取决于您决定如何处理DUP。否则,它们都是有效的。顺便说一句,关于算法的权威书是CLRS书,但我认为他们跳过了2-3棵树,称它们为B树的特例,所以没有太大帮助。谢谢你的帮助,我知道CLRS,但现在对我来说太难了。现在我正在看《数据结构和算法》,并对书中的每个示例和练习进行编码,但其中一些示例和练习也很难,我花了很多时间在上面,这是学习的好方法吗?是的,对树、图、堆、队列等基本数据结构进行编码,排序算法是学习的好方法。2-3树很难编码。祝你好运它们可能都是有效的。最上面的一个允许重复(只需将它们放在右边的子树上)。底部的一个没有任何副本,但没有显示如何处理副本。您可以对2-3树进行编码以拒绝重复值,在这种情况下,顶层树将无效。这取决于您决定如何处理DUP。否则,它们都是有效的。顺便说一句,关于算法的权威书是CLRS书,但我认为他们跳过了2-3棵树,称它们为B树的特例,所以没有太大帮助。谢谢你的帮助,我知道CLRS,但现在对我来说太难了。现在我正在看《数据结构和算法》,并对书中的每个示例和练习进行编码,但其中一些示例和练习也很难,我花了很多时间在上面,这是学习的好方法吗?是的,对树、图、堆、队列等基本数据结构进行编码,排序算法是学习的好方法。2-3树很难编码。祝你好运