Home  >  Article  >  Database  >  几种平衡树的总结

几种平衡树的总结

WBOY
WBOYOriginal
2016-06-07 16:11:171250browse

一、2-3-4树介绍 2-3-4树是一种多叉树(multiway tree),它的每个节点最多有四个子节点和3个数据项,2-3-4 树可以看做是阶为4 的B树。B树是另一种平衡的多叉树,专门用在外部存储中来组织数据(通常是指磁盘驱动器)。B树中的节点可以有几时或几百个。 2-3-4树


一、2-3-4树介绍
2-3-4树是一种多叉树(multiway tree),它的每个节点最多有四个子节点和3个数据项,2-3-4 树可以看做是阶为4 的B树。B树是另一种平衡的多叉树,专门用在外部存储中来组织数据(通常是指磁盘驱动器)。B树中的节点可以有几时或几百个。
2-3-4树名字中的2、3、4的含义是指一个节点可能含有的子节点数。
有1个数据项的节点总是有2个子节点
有2个数据项的节点总是有3个子节点
有3个数据项的节点总是有4个子节点
简言之,非叶子节点的子节点数总是比它含有的数据项多1
在2-3-4树中不允许一个节点只有一个链接,这与传统的二叉树不同。
二、B树、B+树
二叉树提供了良好的性能,但是当数据有序插入时会失去平衡,2-3-4树和2-3树是一种平衡树,是多路的,而红-黑树(见上一篇文章)是一种二叉平衡树,通过严格的红黑规则保持平衡。B树是一种平衡的多路查找树,可以看做一种扩展的2-3-4树,它的数据项个数和子节点数没有限制(如果结点的元素数量非常多的话那就退化成节点内部的线性查找了),在文件系统中有所应用,主要用作文件的索引。
B树插入节点要注意从子节点开始分裂,一直上溯到根
B+树是B树的一种变型
B+树中的非叶子节点不是最终指向文件内容的节点,而只是叶子节点中关键字的索引。所有的叶子节点包含了全部关键字的信息,且叶子节点本身依关键字自小而大顺序链接。所以任何关键字的查找都必须走一条从根节点到叶子节点的路(导致每一个数据的查询效率相当)。

总而言之,B 树在提高了磁盘IO 性能的同时并没有解决元素遍历效率低下的问题。正是为了解决这个问题,B+树应运而生。B+树只要遍历叶子节点就可以实现整棵树的遍历,支持基于范围的查询,而B树不支持range-query 这样的操作(或者说效率太低)。

通过以上介绍,大致将B 树,B+树,B*树总结如下:
● B 树:有序数组+平衡多叉树;
● B+树:有序数组链表+平衡多叉树;
● B*树:一棵丰满的B+树。
B树相关的参考资料http://www.2cto.com/database/201401/272612.html
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn