红黑树——平衡二叉排序树
1.平衡条件
- 每个结点非黑即红
- 根结点是黑色
- 叶子节点(NIL)是黑色
- 如果一个节点是红色,则两个子节点都是黑色
- 从根结点出发到所有叶子节点路径上,黑色节点数量相等
最长路径的长度是最短路径的两倍
- 最短路径:黑黑黑…
- 最长路径:黑红黑红黑红…
任何的AVL树都可以变为一棵红黑树
红黑树相比于AVL树的条件更松散,需要更少的旋转操作就能达到平衡
调整方法:旋转 调整颜色
2.优点
需要更少的旋转操作 旋转操作需要进行地址的操作 两个相邻的节点在内存中的地址不是连续的 对随机地址访问就是cpu对内存的随机访问
修改颜色更加简单
现在的cpu对数据读取的加速策略:读取i位置的元素时会一次性读取相邻位置的元素 ,当顺序访问数据时 cpu效率很高
3.调整策略
(红黑黑)根结点由黑变红=经过此节点所有路径黑色节点数量-1=(黑红红)根结点的两个子节点由黑变红
- 插入调整站在祖父节点看!!!
- 删除