我一直在研究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||
我不确定值的存储方式和位置。
答案 0 :(得分:1)
在每个节点中,包括内部和叶子,以及键。
在B + -Tree中,所有密钥都在叶节点中可用。因此,在拆分叶节点的情况下,您只能将键推送到父节点,并为自己保留值。但是,在B树中,键不会重复,因此您必须在内部节点中具有值。
您可以使用键值映射并迭代它的键以获取特定于树的函数。由于您需要对键进行排序,因此您应该使用有序映射,例如java中的TreeMap或者简单的std :: map for c ++。 (Python在标准库中没有类似的东西。)它们还有助于轻松拆分节点并将事物推送到新节点。