Golang - 数据结构之多路树(B树、B+树)

背景说明

二叉树在数据量庞大的时候,树的深度难以想象,造成了磁盘的IO读取性能急剧衰减,为了提高在大数据领域和数据库方面的适用性,提出了多路数,每个节点存储多个数据,同时可以存在多个子节点,这样树的层数得到了极大的缩减

一、多路数 - B树

条件:
a、根节点至少有2个子节点
b、每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m
c、每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m
d、所有的叶子结点都位于同一层
e、每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划

二、多路数 - B+树

条件:
a、有k个子结点的结点必然有k个关键字
b、非叶结点仅具有索引作用,跟记录有关的信息均存放在叶结点中
c、树的所有叶结点构成一个有序链表,可以按照关键码排序的次序遍历全部记录

典型应用场景:Mysql数据库的索引类型 - B+索引

你可能感兴趣的:(Golang)