B树:全称Balance-tree(平衡多路查找树),平衡的意思是左边和右边分布均匀。多路的意思是相对于二叉树而言的,二叉树就是二路查找树,查找时只有两条路,而B-tree有多条路,即父节点有多个子节点。
B树与B+树的区别:
- B+树中只有叶子节点会带有指向记录的指针,而B树则所有节点都带有,在内部节点出现的索引项不会再出现在叶子节点中。
- B+树中所有叶子节点都是通过指针连接在一起,而B树不会。
B树:用在磁盘文件组织数据索引
B+树:用于数据库索引。
红黑树:c++ STL中的 set 和 map
unordered_map:hash
B树运用为文件系统索引:文件系统和数据库的索引都是存在硬盘上的,并且如果数据量大的话,不一定能一次性加载到内存中。即,一棵树没有办法一次加载到内存中,B树、B+树是多路的,每次可以加载一个节点到内存中去进行查找,然后一次次查找上去。
在内存中,红黑树比B树效率更高,但是在磁盘中B树更优。