红黑树
2023-10-14 17:54:08 2 举报
红黑树的一些基本操作
作者其他创作
大纲/内容
80
53
46
72
74
1
18
70
25
88
8
2
82
50
操作:父节点为黑插入无需进行操作
34
12
null
3
90
2、左左
11
变色
右旋
指的是父节点是祖父节点的左孩子还是右孩子,子节点是父节点的左孩子还是右孩子比如:左左,就是父节点为左孩子,该节点也为父节点的左孩子
红黑树性质
这样看很容易看出来符合前四个原则但是,只要把null节点都填上去就会发现,34节点右边只有三个黑节点,而其他的有四个黑节点
三个黑节点
76
叔节点和父节点都为红
左旋
10
以此为线
叔节点和父节点全部变为黑色,爷爷节点变为红色
81
红黑树的插入
92
64
插入
4、左右
12 15 25
先右旋再左旋
83
46 50
........
满足红黑树的性质 4 :parent 为黑色节点。
红黑树等价变化
普通红黑树
先左旋再右旋
需要旋转的节点的右孩子的左孩子变为旋转节点的右孩子
86
2为轴
需要旋转的节点变为该左孩子的右节点
需要旋转的节点的左孩子的右孩子变为旋转节点的左孩子
当前插入节点11,它的父节点为红色,所以就违反了性质四
父亲节点为黑
57
红黑树的旋转(仅仅考虑旋转)
1、右右
规律:首先把需要旋转的节点的孩子节点和孙子节点形成一个平面,先观察此平面的上部分是往那边偏的,往那边偏就是往那边转,一次转不成功就旋转两次
15
3、右左
又出现了父红叔红的情况,继续进行上一步的操作
需要旋转的节点变为右孩子的左节点
34 53 80
性质1. 结点是红色或黑色。性质2. 根结点是黑色。性质3. 所有叶子都是黑色。(叶子是NIL结点)性质4. 每个红色结点的两个子结点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色结点)性质5. 从任一结点到其每个叶子的所有路径都包含相同数目的黑色结点。
叔节点为黑和父节点为红
不满足红黑树的性质 4 :parent 为红色节点
4个黑节点
根节点为红
73
根节点变黑
70 74
收藏
收藏
0 条评论
下一页