啥是虹黑树
一种自平衡二叉查找树
特性:节点是红色或黑色
根节点一定是黑色
每个叶节点都是黑色的空节点(NIL节点)
每个红节点的两个子节点都是黑色的(从每个叶子到跟的所有路径上不能有两个连续的红节点)(即对于层来说除了NIL节点,红黑节点是交替的,第一层是黑节点那么其下一层肯定都是红节点,反之一样)
从任一节点到其每个叶子节点的所有路径都包含相同数目的黑色节点
参考博客
网上相关资料很多,这里只记录插入的五种情况
- 插入节点为root节点,直接改节点颜色为红色
- 插入节点后,父节点为黑色,无需改变
- 插入节点后,父节点为红色,且父节点的兄弟节点也是红色:修改父节点和其兄弟节点为黑色,祖父节点为红色,并检查祖父节点是否满足条件
- 插入节点后,父节点为红色,父节点的兄弟节点为黑色,并且是右插入:修改父亲节点为黑色,祖父节点为红色。以父节点为中心,进行左旋,并以祖父节点为中心右旋
- 插入节点后,父节点为红色,父节点的兄弟节点为黑色,并且是左插入:修改父亲节点为黑色,祖父节点为红色。以祖父节点为中心右旋