【问题标题】:Construct a BTree from a sorted array从排序数组构造 BTree
【发布时间】:2020-07-13 15:52:54
【问题描述】:

我需要从一个排序数组构造一个 BTree。 任何指针或我如何编写这样的算法? 是否有任何算法可以利用正在排序的数组?

我确实在谷歌上搜索过,但找不到 BTree 的算法。

【问题讨论】:

  • 第 1 步:创建具有给定单个条目的 B-Tree。第 2 步:编写一个函数以将单个新条目添加到现有 B-Tree。第 3 步:应用第 2 步,直到将整个数组添加到树中。
  • 看看B-Tree Datastructure。使用排序数组,您将始终在树中最右边的位置添加下一个元素。
  • 这很好,但我想出什么算法?

标签: arrays algorithm data-structures b-tree


【解决方案1】:

@rossum 的方式很简单,但是效率不高。他的建议不使用具有排序列表的信息。
我认为,您已经解决了相等键的问题。 (BTree的节点或BTree的一个节点中的List)

我是这样理解你的问题的:

您想将排序列表/数组直接转换为度数为 t 的 btree。 我只有一个猜测/想法。检测点

  1. 步骤 检测给定数量元素的最小高度 h,计算给定 BTree 高度的最小和最大元素的范围。

    n(max) = sum(i=0,i

    n(min) = sum(i=0,i

  2. 步骤 将 t 和 t/2 之间的范围最小化到 t>=x(high) 和 x(Low)>=(t/2),而 n 在 x(low) 和 x(max) 的范围内 3.步骤 计算递归节点,您必须将 vorm x(high) 更改为 x(Low)

  3. 步骤 构建您的 BTree,其中包含具有度 (x(high)) 的内部节点,并包含具有 (x(High)-1) 内部键的叶子,直到您到达参考节点。到达参考节点后,所有内部节点都有 x(low)=x(high)-1 度,所有叶节点都有 x(low) 键。

但这只是一个想法。我还没有编程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    相关资源
    最近更新 更多