查找三 多路查找树(2-3树,2-3-4树,B树、B+树)

来源:互联网 发布:最好小额网络理财投资 编辑:程序博客网 时间:2024/06/06 07:55

应用场景:解决在硬盘中的大量数据中的查找。因为大量数据存储在硬盘中,不能一次全部加载到内存中,而每次查一个数据读一次硬盘,读取速度太慢,这时就需要使用一种数据结构一部分一部分读入,这就是多路查找树的作用。

2-3树

2结点:每个几点包含一个元素和两个孩子(或者没有孩子)。其中左孩子小于该节点元素,右孩子大于该节点元素。
3结点:每个节点包含两个元素和三个孩子(或者没有孩子)。其中左孩子小于节点中较小元素,中孩子大于较小的小于较大的元素,右孩子大于较大的元素。
2-3树:由2结点和3结点组成的树,并且所有叶子节点都在同一层上

2-3-4树

2-3树的扩展,加入了4节点,包含小中大三个元素和四个孩子分布在这三个元素划分的四个空间范围。

B树

B树就类似于2-3树和2-3-4树,节点最大孩子数目称为B树的阶,B树的每个节点比原来那些节点多了一个指示该节点元素个数的存储空间。一般B树的阶数都很大。
优点:查找时很方便,每个节点存放在对应硬盘的一个页面,每次读取一个节点和key值对比,然后判断下一次该读哪个节点。
缺点:当需要进行中序遍历时,我们需要往返于每个节点之间(即中序遍历左子孩子访问完回到父节点,然后又访问左孩子向右一个孩子),这样就会造成多次硬盘访问,降低速度。这是就需要使用B+树

B+树

解决元素遍历的基本问题。
B+树:打破了树种每个元素只出现一次的原则,在每个叶子节点上增加存储其他中间节点中的元素。即叶子几点包含原来全部节点信息,并且包含后继的叶子节点的索引。

优点:特别适合有范围的查找。

数据库使用的就是B+树的查找。