1. 导读
本次主要分享HashMap中红黑树插入后再平衡的过程, 主要内容如下:
.1 什么是红黑树;
.2 左旋与右旋;
.3 HashMap红黑树的再平衡过程;
2. 什么是红黑树
为后面内容做铺垫(如果对此部分内容熟悉可直接跳过), 先简单介绍下红黑树:
红黑树是一棵二叉树, 且是一棵自平衡二叉树, 到这里, 我们可以知道红黑树具有:
.1 除根节点外, 每个节点都有其父节点, 可以有两个子节点;
.2 比当前节点大是右节点, 小的是左节点;
除了上面的特性以外, 红黑树还有其自身的特性:
.1 节点是红色或黑色;
.2 根是黑色;
.3 所有叶子都是黑色(叶子是NIL节点;
.4 每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点;)
.5 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点;
下面是一棵典型的红黑树:
那我们以上图为基准, 来看红黑树插入的情况:
.1 插入节点是12:
这种情况是比较理想的情况, 完全符合红黑树的特性, 就不需要再平衡;
我们来看下插入节点是7的情况:
.2 插入节点是7: