红黑树(上)调色篇

简介: 红黑树是配合二叉树的一种实现,主要要满足以下性质:1.根节点必须为黑色2.父子不能同为红色3.从任何节点出发,到达叶节点经过的黑色节点数量一致对每个新插入的节点存在以下情况:1.没有爸爸:那么它自己变为黑色,做根节点。

红黑树是配合二叉树的一种实现,主要要满足以下性质:

1.根节点必须为黑色

2.父子不能同为红色

3.从任何节点出发,到达叶节点经过的黑色节点数量一致

对每个新插入的节点存在以下情况:

1.没有爸爸:

那么它自己变为黑色,做根节点。

20190727151252326.png

2.爸爸是黑色

直接插入

20190727151312505.png

3.爸爸是红色

这种情况有两种子情况

3.1uncle节点(父节点的兄弟节点)也是红色

新插入的为红色,爸爸变为黑色,uncle也变为黑色,祖父变为红色。

然后祖父网上递归以上过程。

20190727151403994.png

3.2uncle是黑色。以祖父节点为基准右旋,在手撕JAVA十三中已经介绍过右旋其实就是将当前提上去,原来在上一级的节点压下来,当前节点的右子树,给原来上一级节点做他的左子树。

20190728185758825.png

目录
相关文章
|
7月前
|
存储 算法
算法编程(十):相交链表
算法编程(十):相交链表
54 0
|
2月前
|
算法 C++
【算法单调栈】 矩形牛棚(C/C++)
【算法单调栈】 矩形牛棚(C/C++)
|
6月前
平衡二叉搜索树(AVL)旋转
平衡二叉搜索树(AVL)旋转
|
7月前
|
测试技术
ONT60 旋转链表 思路分享
先将整个链表整体反转,再分别反转前k个和剩下的。
34 0
|
7月前
leetcode-61:旋转链表
leetcode-61:旋转链表
35 0
|
7月前
「LeetCode」61. 旋转链表
「LeetCode」61. 旋转链表
48 0
|
7月前
|
算法
斜向三消查找算法的原理和实现
斜向三消查找算法的原理和实现
37 0
|
7月前
|
存储 算法 对象存储
算法编程(八):环形链表
算法编程(八):环形链表
52 0
|
Java Python
leetcode:61.旋转链表
给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。
72 0
下一篇
DataWorks