特征
红黑树是 “平衡” && 搜索 && 二叉树
“平衡”:相较于AVL树来说,红黑树是一种“弱平衡”
定义:红黑树中,任意根到叶子结点的路径中,LEN(max) <= 2 * LEN(min)
红黑树5条规则:
①红黑树中的节点:或红或黑
②根节点一定是黑色的
③“叶子结点”一定是黑色的(红黑树的叶子为null)
④红黑树中,任意路径(根到节点)中,红色和红色不能相邻
⑤红黑树中,任意路径(根到节点)中,黑色节点的数量必须一样多
红黑树一定满足这5条规则
但满足5条规则不一定是红黑树
红黑树的操作
1. 查找(完全等同于一般搜索树的查找)
2. 插入
插入操作根据 “红色和红色不能相邻” 这条规则——插入的新节点,一定是红色的
红黑树的插入步骤:
① 按照一般搜索树的插入规则进行节点的插入
② 判断插入是否破坏了红色和红色不能相邻这条规则,若破坏了,则需进行平衡调整操作
③ 把根节点置为黑色
平衡调整操作:
考虑两种情况:
1. uncle存在 && nucle的颜色是红色
2. uncle不存在 或者 (uncle存在 && nucle的颜色是黑色)