数据结构与算法(十二)红黑树

简介: 数据结构与算法(十二)红黑树

数据结构可视化学习网址:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

性质

1.每个结点不是红色就是黑色

2.每个叶子节点都是黑色的空节点(NIL),根结点都是黑色

3.不可能有相连的红色的结点。

4.每个结点到其可达叶子结点的所有路径,包含黑色结点的数量是一样的。

5.所有新加的点都是红色

变换

1.红变黑,黑变红

2.左旋

3.右旋

变换规则

插入的时候旋转和颜色变换规则:

1.变颜色的情况:当前结点的父亲是红色,且它的祖父结点的另一个子结点(叔叔结点)也是红色。:

(1)把父节点设为黑色

(2)把叔叔也设为黑色

(3)把祖父也就是父亲的父亲设为红色(爷爷)

(4)把指针定义到祖父结点(爷爷)设为当前要操作的.

2.左旋:当前父结点是红色,叔叔是黑色的时候,且当前的结点是右子树。左旋

以父结点作为左旋。指针变换到父亲结点

3.右旋:当前父结点是红色,叔叔是黑色的时候,且当前的结点是左子树。右旋

(1)把父结点变为黑色

(2)把祖父结点变为红色 (爷爷)

(3)以祖父结点旋转(爷爷)

图示

红黑树图解_00.png

目录
相关文章
|
算法 C++
【数据结构与算法】—— 手撕红黑树
【数据结构与算法】—— 手撕红黑树
|
2月前
|
存储 Java 数据库
手撕红黑树 - 聊聊这个基本却又重要的数据结构
手撕红黑树 - 聊聊这个基本却又重要的数据结构
21 0
|
4月前
|
存储 关系型数据库 数据库
【数据结构】—红黑树(C++实现)
【数据结构】—红黑树(C++实现)
|
7月前
|
存储 Java 数据库
【红黑树数据结构及其应用】
【红黑树数据结构及其应用】
|
7月前
|
存储
数据结构之二叉查找树(Binary Search Tree)和红黑树(Red Black Tree)
二叉查找树又可以称之为 : 二叉搜索树 , 二叉排序树 , 它或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不空,则左子树上所有结点的值均小于它的根节点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势 , 下图中这棵树,就是一棵典型的二叉查找树
111 1
|
7月前
|
关系型数据库
|
2月前
从0开始回顾数据结构---红黑树
红黑树 1、什么是红黑树 红黑树是一种不严格的平衡二叉树,插入、删除、查找的最坏时间复杂度都为 O(logn),避免了二叉树最坏情况下的O(n)时间复杂度。 红黑树特性如下: 1. 根节点是黑色 2. 每个节点要么是黑色要么是红色 3. 每个红色节点的两个子节点一定都是黑色 4. 每个叶子节点(NIL)都是黑色 5. 任意一个节点的路径到叶子节点所包含的黑色节点的数量是相同的---这个也称之为黑色完美平衡 6. 新插入的节点必须是红色->为什么?如果新插入的节点是黑色,那不管是在插入到那里,一定会破坏黑色完美平衡的,因为任意一个节点的路径到叶子节点的黑色节点的数量肯定不一样了。 2、为什么需
|
7月前
|
C++
【数据结构】红黑树封装map和set(上)
【数据结构】红黑树封装map和set(上)
|
4月前
数据结构——红黑树
数据结构——红黑树
29 0
|
9月前
|
存储 算法 Java
深入解析 Java 数据结构:红黑树的特点与应用
红黑树(Red-Black Tree)是一种自平衡的二叉搜索树,它在 Java 编程中扮演着重要的角色,用于高效地存储和管理数据。红黑树的特点使其在查找、插入和删除操作中保持相对平衡,从而提供了稳定且高效的性能。本文将深入探讨红黑树的特点、用法、实现方式以及在实际应用中的优势。