慕课网liuyubobobo老师课程学习笔记---part12:红黑树

1、红黑树与2-3树

慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第1张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第2张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第3张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第4张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第5张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第6张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第7张图片

2、树的绝对平衡性
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第8张图片

  2-3树在添加结点的时候,新的结点永远不会添加到空的位置,而只会我们最后找到的叶子结点做融合。
1)对于根结点是4结点的时候(4结点一个结点内有3个元素,2-3树每个结点只能有1或2个元素),我们可以直接将4结点分为一颗子树(由3个2结点组成的树,即每个结点只有一个元素)。
2)对于叶子结点来说,如果该叶子结点因为添加一个元素,从3结点变成4结点,我们先将该结点拆分为由3个2结点组成的树,再将这颗树的根结点与其父节点融合成为一个3结点(如果父结点原来只有一个元素)。这样才能保证2-3树的绝对平衡性!
3)在2)中,如果拆分的树的根结点的父结点原来有2个元素,根结点同样融合到父亲结点后,父亲结点成为一个4结点,我们将这个4结点进行分裂,如下:
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第9张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第10张图片
  2-3树插入的规律如下
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第11张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第12张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第13张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第14张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第15张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第16张图片

3、红黑树与2-3树的等价性
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第17张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第18张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第19张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第20张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第21张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第22张图片

4、红黑树的基本性质与复杂度分析
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第23张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第24张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第25张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第26张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第27张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第28张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第29张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第30张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第31张图片

5、保持根结点为黑色和左旋转 + 颜色翻转和右旋转
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第32张图片

  红黑树添加结点的规则:
1)在添加红黑树的根结点的时候,我们首先添加红色结点,因为红黑树的根结点必须是黑色,我们需要将根结点变为红色;(对应2-3树中添加一个根结点
2)需要将根结点变为黑色,这种情况在添加结点的时候(不止是添加根结点)是普遍存在的!
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第33张图片
3)添加的新结点(非根结点)在红黑树中**(左子树为空,右子树可以为空或者黑色结点)的黑色结点的左侧**,直接添加即可,表示2-3树的3结点。(对应2-3树中将元素添加到一个2结点,使得2结点变为3结点)。注意,此处黑色结点也可以是红色的,对应2个偏向左侧的红色结点,其实就是对应下面(6)的情况,我们再按下面(6的情u况处理即可!)
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第34张图片
4)添加的新结点(非根结点)在红黑树中**(右子树为空,左子树为空或者黑色结点)的黑色结点的右侧**,此时不满足红黑树的性质(红黑树中所有的红色结点都在左侧),此时需要进行左旋转。(对应2-3树中将元素添加到一个2结点,使得2结点变为3结点)。注意,此处黑色结点也可以是红色的,左旋转后对应2个偏向左侧的红色结点,其实就是对应下面(6)的情况,我们再按下面(6的情况处理即可!)。
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第35张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第36张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第37张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第38张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第39张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第40张图片
慕课网liuyubobobo老师课程学习笔记---part12:红黑树_第41张图片

你可能感兴趣的:(数据结构,红黑树,2-3树,二分搜索树,AVL)