algorithm - 二叉搜索树和m-way树的区别

标签 algorithm

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

最佳答案

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

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

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

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

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

这些 m-way 树通常用于可以在一个有效 block 中容纳多个值的情况。高效是指可以高效读取和写入的数据,例如磁盘 block 、扇区、簇或柱面,具体取决于您的存储子系统的运行方式。

例如,假设:

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

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

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

虽然存在一些浪费(在本例中为四个字节),但这样做的好处是可以在每个可高效检索的 block 中存储整数个值。

关于algorithm - 二叉搜索树和m-way树的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/814819/

相关文章:

algorithm - 查找其他用户附近的用户

algorithm - 什么是计算机科学中的 NP-complete?

javascript - 优化从最后一个元素中减去第一个元素的算法

python - 获取已打印python的文本内容

java - 图顶点和边作为邻居的 BFS

c++ - 通过确定系数找到两个 vector 的关系

algorithm - 信号增强算法

algorithm - 小世界理论的实现——就像在 XING 中一样

algorithm - 寻找一组点的旋转中心

c - C 数组中最长的递增序列