(一)红黑树
红黑树是一种自平衡二叉查找树,也被称为"对称二叉B树",它可以在O(logn)时间内利用 O(logn)的空间来完成查找、插入、删除操作。红黑树的读操作与普通二叉查找树相同,而插入和删除操作可能会破坏红黑树的规则,需要进行恢复操作。恢复红黑树的性质需要少量的颜色变更(实际是非常快速的)和不超过三次树旋转(对于插入操作是两次),虽然插入和删除很复杂,但操作时间仍可以保持为O(logn)。
红黑树的规则:
1.节点是红色或和黑色
2.根节点是黑色
3.所有的叶子节点都是黑色(叶子节点是NIL节点,实际应用时可以有数据)
4.每个红色节点必须有两个黑色的子节点,从叶子节点到根节点不能有两个连续的红色节点。
5.从任意节点到每个叶子节点的简单路径都包含相同数量的黑色节点。
(二)B+树
(1)B+树常用于数据库和文件系统中,B+树能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+ 树自底向上插入,这与二叉树恰好相反。
(2)B+树与B树的主要区别:1.B+树中只有叶子节点会带有指向记录的指针,而B树所有节点都有指针,在内部节点出现的索引项不会再出现在叶子节点中。(B+树的所有全量数据都在叶子节点,而B树每个节点都是全量数据)2.B+树中所有叶子节点都是通过指针连接在一起,而B树不会。
(二)两种树的区别
红黑树结构的数据常常存在于主存中,主要用于快速查找。树的每个节点存储的数据量比较小,cpu通过与主存少量的交互就能获取树的全部数据,并快速的查找到所需数据。而B+树形式的数据常常存在于SSD或磁盘中,由于树的深度比较小(一般3~4),能够减少cpu于磁盘间的交互时间。