B-Tree键的值存储在哪里?

时间:2017-10-02 12:49:18

标签: data-structures tree hashmap b-tree

我一直在研究B-Trees,用于存储大约10k个字符串数据库,每个字符串都有一个唯一的ID,我认为它可以作为我的密钥。但是我看到的每个实现都只显示B树中的键而不是值。我确信B-Tree在作为地图时必须将值链接到键,但我无法理解它们是否与键一起存储在树的节点内。例如。

       ||key3|   |key6||
     /         |          \
    /   ||key4| |key5||    \
   /                        \
||key1| |key2||         ||key7| |key8||
       ||k3,v3| |k6,v6||
     /         |         \
    /   ||k4,v4||k5,v5||  \
   /                       \
||k1,v1| |k2,v2||         ||k7,v7| |k8,v8||

我不确定值的存储方式和位置。

1 个答案:

答案 0 :(得分:1)

在每个节点中,包括内部和叶子,以及键。

在B + -Tree中,所有密钥都在叶节点中可用。因此,在拆分叶节点的情况下,您只能将键推送到父节点,并为自己保留值。但是,在B树中,键不会重复,因此您必须在内部节点中具有值。

您可以使用键值映射并迭代它的键以获取特定于树的函数。由于您需要对键进行排序,因此您应该使用有序映射,例如java中的TreeMap或者简单的std :: map for c ++。 (Python在标准库中没有类似的东西。)它们还有助于轻松拆分节点并将事物推送到新节点。