B-树、B+树

时间:2023-01-16 17:52:34

B-树

用来在外部存储中组织数据。

严格来说,2-3树、2-3-4树都是B-树的特例;但B树更强调它的节点有很多个子节点,B-树中的节点可以有几十或几百个子节点。

B-树也可以是查找树,也可以不是查找树,这里涉及的都是查找树。

5阶的B-树指这个树的非叶节点最多可以有5个子节点。

B-树应用于硬盘

把硬盘的一个块作为B-树的一个节点,这样读取一个节点可以在最短时间里访问最大数据量。在硬盘中存储的树,链接是文件中块的引用,可以用一个int型的字段保存块号码,int有4个字节,可以保存20亿以上数量的块号码,基本对大多数文件都够用了。

设计原因

保证只有少数的磁盘访问次数,在让树的层数更少,就需要在一个节点保存的数据项更多,而硬盘一次读取非常快,可以读取大量数据。

查找

因为有序,所以按关键字查找和普通的有序的树查找类似

插入

和2-3树类似。节点分裂时,一半数据不动,一半数据移动到新节点。

在整个插入过程中,没有一个节点(根除外)的数据项少于一半,并且很多都比一半要满。因此读一个节点时,总是能存取尽可能多的数据,提高了效率。

B+树

非叶节点有n个数据项,就有n个子节点

叶节点有序且互相连接

只有叶节点保存数据,非叶节点只保存关键字和块号码

B+树的优点

非叶节点可以保存更多块号码,这样的高阶树层数更少,效率更快