参考: http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html
B树
最简单的B树就是2-3树,一个节点最多存储2个值。
可以通过二分法快速查找,时间复杂度为o(logN)。
- B树的每个节点都是有效值,且可以进行多路查询(存储),减小了树的高度,在文件系统和数据库中都是常见的数据结构。
- 多路存储对B树来说改动非常小,所以适合数据量庞大的文件系统。
- 在文件系统中,如果不使用B树的结构,把现在的3路B树的路数无限扩大,就会变成一个数组。
类似这样这样的3路B树
变成这样的数组
假设文件系统一次性只能加载2个数,显然数组的形式是不适用的,B树更加的合适。
先对B树进行查找,查找到将对应的节点加载进内存。
B+树
B+树与B树的区别就在,B+树的非叶子节点保存的是索引值,所有的数据值在叶子节点,叶子节点间使用链表链接。
B树与B+树对比
B树的查找可能比B+树更加快点,因为B树的数据值都在对应的节点上,可能会比B+树更快的返回。但是如果要去连续的一段值的话,B+树更加的合适。符合空间局部性。
红黑树
红黑树的性质:
1)一个节点不是黑色就是红色。
2)根节点一定是黑色
3)红色节点的子节点一定是黑色
4)红黑树的叶子节点一定是黑色(null值的节点)
5)从一个节点开始到该节点所以子孙节点的路径上黑色节点的数量是相同的。
对比B树和红黑树
红黑树有着比B树更快的查询效率,为什么文件系统中不使用B树?
因为,对红黑树的插入、删除会引起整棵树的改动会比较大,但是B树的插入和删除只会引起局部的变化。所以兼顾了这点,文件系统和数据库更倾向于B树。