参考文献:algs4.cs.princeton.edu/33balanced/
红黑树的实现
红黑树实质上就是平衡树设计的二叉树版本的实现
多值节点的编码
红黑树背后的思想就是在二叉树的基础上,为节点添加额外的信息来表示平衡树设计中的多值节点(3-node)。
我们将连接关系分为两类:第一类连接代表多值节点内元素之间的连接,这类连接被称为红色连接;另一类连接代表两个树根节点之间的连接,这类连接被称为黑色连接。我们为每个节点添加了一个 boolean 类型的属性来表示这个节点与父节点的连接类型。
特别地,我们令所有红色连接的方向都是左倾的,这样有助于减少状态的数量
旋转
我们通过一个被称为旋转的操作来将红色链接由右倾转换为左倾。
首先,假设有一个右倾的链接,我们要把它转换为左倾。这个操作被称为左旋。
颜色反转
当一个黑色的父节点拥有两个红色的子节点时,那么将父节点和子节点的颜色全部反转。