二叉树的性能取决于树的高度,如果二叉树退化成线性表那性能就很差,所以引入了红黑树来确保树的平衡性。
为什么不用红黑树来做文件系统的索引:数据量太大无法将整棵树加载在内存中进行搜索,二叉树是链表存储具有无序性,这样会频繁对硬盘IO。
B+树考虑了(有序数组+链表)多路搜索,顺序的存储到磁盘的页上,可以有效的减少了磁盘IO。B+树会存在资源的浪费。
旋转操作(Rotate)的目的是使节点颜色符合定义,让RBTree的高度达到平衡。
Rotate分为left-rotate(左旋)和right-rotate(右旋),区分左旋和右旋的方法是:待旋转的节点从左边上升到父节点就是右旋,待旋转的节点从右边上升到父节点就是左旋。