二叉搜索树和红黑树简介
- 二叉搜索树:
1 | 二叉搜索树是一种节点值之间具有一定数量级次序的二叉树 |
- 红黑树:自平衡的二叉搜索树。
性质
1 | 性质1:每个节点要么是黑色,要么是红色。 |
红黑树的自平衡
- 自平衡的三种操作:左旋、右旋和变色
- 左旋:以某个结点作为支点(旋转结点),其右子结点变为旋转结点的父结点,右子结点的左子结点变为旋转结点的右子节点,左子结点不变。
- 右旋:以某个结点作为支点(旋转结点),其左子结点变为旋转结点的父结点,左子结点的右子结点变为旋转结点的左子结点,右子结点保持不变。
- 变色:结点颜色由红变黑或者由黑变红。


- 红黑树左旋/右旋的实际操作意义:
1 | <1> 左旋只影响旋转结点和其右子树的结构,把右子树的结点往左子树挪。 |
红黑树的查找
- 因为红黑树是一颗二叉平衡树,并且查找并不会破坏树的平衡,所以查找和二叉平衡树的查找无异。
1 | 1、从根节点开始查找,把根节点设置为当前结点; |

红黑树的删除
- 删除时先作为普通二叉树进行删除:
1 | 1、若删除结点无子结点,直接删除。 |
- 寻找前继结点和后继结点的方法:将二叉树所有结点投射到X轴上,所有结点都是从左到右排序的,所有目标结点的前后结点就是对应前继和后继结点。

- 我们在删除红黑树结点时是先将他作为普通的二叉搜索树进行操作的,我们将结点删除后,再进行变色,避免同时操作时发生混乱。

- 在删除结点时,我们可以将单一的结点树进行操作,而将未进行操作的树保留在一旁;整个的删除过程全部满足红黑树本身的五条性质,也就是说在变换过程中,对红黑树的一切操作都是为了让整个红黑树删除结点后依旧满足红黑树的性质。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1259742453@qq.com