二叉搜索树和m路树之间的区别

时间:2009-05-02 12:53:52

标签: algorithm

请解释二叉搜索树和m-way树之间的区别?

3 个答案:

答案 0 :(得分:7)

m-way树是一种树结构,具有m个值和m + 1个链接。

二叉树是m-way树的一种特殊情况,m等于1,这意味着每个节点只有一个值和两个链接(向下移动到左边或右边的链接)。以下是显示此内容的二叉树示例:

             +----+
             | 20 |
             +----+
            /      \
      +----+        +----+
      | 14 |        | 23 |
      +----+        +----+

m-way树每个节点可以有多个值,但理论仍然相同。您可以根据值选择要向下移动的链接,并且可以选择m + 1。 m-way树(m为2)可能如下所示:

              +----+----+
              | 17 | 30 |
              +----+----+
       ______/     |     \______
      /            |            \
+----+----+   +----+----+   +----+----+
| 11 | 15 |   | 19 | 28 |   | 33 | 34 |
+----+----+   +----+----+   +----+----+

这些m-way树通常用于可以在高效块中放入多个值的情况。有效率,我的意思是可以高效读取和写入,如磁盘块,扇区,集群或柱面,具体取决于存储子系统的运行方式。

例如,让我们说:

  • 磁盘块为512字节;
  • 树中的值占用122个字节;和
  • 链接占用4个字节。

在这种情况下,您可以将4个值放入磁盘块中,计算方法如下:

numvals = int ((blocksize - linksize) / (valuesize + linksize))
        = int ((   512    -     4   ) / (   122    +     4   ))
        = int (          508          /            126        )
        = int (                    4.0317                     )
        =                             4

它为您提供了四个值和五个链接,总共508个字节:

4 * 122 = 488
5 *   4 =  20
          ---
          508

虽然存在一些浪费(在这种情况下为四个字节),但这具有在每个可高效检索的块中存储整数个值的优点。

答案 1 :(得分:2)

binary search tree只有两个固定分支,因此更容易实现。当树必须存储在磁盘而不是存储器中时,通常使用诸如B-trees之类的m路树。示例包括文件系统和数据库索引。

答案 2 :(得分:0)

m-way搜索树是m-way树,其中:

每个节点都有m个子节点和m-1个关键字段 每个节点中的键按升序排列。 第一个孩子的钥匙小于第i个钥匙 最后一个m-i子项中的键大于第i个键

m阶多路搜索树的扩展是m阶的B树。当要访问/存储的数据位于辅助存储设备上时,将使用这种类型的树,因为它们允许将大量数据存储在节点中。

m阶的B树是一个多路搜索树,其中:

除非树是树中唯一的节点,否则根至少有两个子树。 每个非根节点和每个非叶节点最多只有m个非空儿童和至少m / 2个非空儿童。 每个非根节点和每个非节点节点中的键数比其非空子节点数少一个。 所有的叶子都处于同一水平。