平衡二叉树很好理解,而红黑树又是什么?其实这是有发展历程的。完美情况下是可以得到一个平衡二叉树的,但是往往它不容易形成,于是便有了红黑树,发展历程如下:
平衡二叉树 -> 2-3树 ->红黑树
平衡二叉树:
性质1: 可以是空树。
性质2: 假如不是空树,任何一个结点的左子树与右子树都是平衡二叉树,且高度之差的绝对值不超过1。
2-3树:
性质1:满足二叉搜索树的性质
性质2:节点可以存放一个或两个元素
性质3:每个节点有两个或三个子节点
规则1: 加入新节点时,不会往空的位置添加节点,而是添加到最后一个叶子节点上
规则2: 四节点(个人理解为4号节点,并不是真的内含四个节点的节点,其实内部只有3个节点)可以被分解三个2-节点(同样是2号节点)组成的树,并且分解后新树的根节点需要向上和父节点融合
红黑树(可等价于2-3树):
2-3树 转换成 红黑树:
-
将3-节点拆开,成为一棵树,并且3-节点的左元素作为右元素的子树
-
将原来的左元素标记为红色(表示红色节点与其父节点在2-3树中曾是平级的关系)
红黑树的插入与删除逻辑
插入:
删除:
更多细节参见: