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

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

数据结构可视化学习网址: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

目录
相关文章
|
6月前
|
算法 C++
【数据结构与算法】—— 手撕红黑树
【数据结构与算法】—— 手撕红黑树
|
3月前
|
存储 算法 C语言
"揭秘C语言中的王者之树——红黑树:一场数据结构与算法的华丽舞蹈,让你的程序效率飙升,直击性能巅峰!"
【8月更文挑战第20天】红黑树是自平衡二叉查找树,通过旋转和重着色保持平衡,确保高效执行插入、删除和查找操作,时间复杂度为O(log n)。本文介绍红黑树的基本属性、存储结构及其C语言实现。红黑树遵循五项基本规则以保持平衡状态。在C语言中,节点包含数据、颜色、父节点和子节点指针。文章提供了一个示例代码框架,用于创建节点、插入节点并执行必要的修复操作以维护红黑树的特性。
101 1
【数据结构】红黑树——领略天才的想法
【数据结构】红黑树——领略天才的想法
|
1月前
|
Java C++
【数据结构】探索红黑树的奥秘:自平衡原理图解及与二叉查找树的比较
本文深入解析红黑树的自平衡原理,介绍其五大原则,并通过图解和代码示例展示其内部机制。同时,对比红黑树与二叉查找树的性能差异,帮助读者更好地理解这两种数据结构的特点和应用场景。
28 0
|
6月前
【数据结构】红黑树的原理及其实现
【数据结构】红黑树的原理及其实现
|
3月前
|
存储 Java 程序员
"揭秘HashMap底层实现:从数组到链表,再到红黑树,掌握高效数据结构的秘密武器!"
【8月更文挑战第21天】HashMap是Java中重要的数据结构,采用数组+链表/红黑树实现,确保高效查询与更新。构造方法初始化数组,默认容量16,负载因子0.75触发扩容。`put`操作通过计算`hashCode`定位元素,利用链表或红黑树处理冲突。`get`和`remove`操作类似地定位并返回或移除元素。JDK 1.8优化了链表转红黑树机制,提升性能。理解这些原理能帮助我们更高效地应用HashMap。
45 0
|
5月前
|
算法 架构师 NoSQL
【数据结构之红黑树】深入原理与实现
意节点的左子树和右子树的层高差不大于1,为了维护树的平衡,我们介绍了树的左右旋转。但是,AVL树维护平衡的代价是比较大的。所以,我们又介绍了红黑树这种数据结构,这是因为红黑树插入的效率相对AVL树是比较高的,在统计意义上来讲红黑树在插入和查找综合上效率是比较高的,这也是为什么红黑树为什么广泛应用在计算机各个方面。
50 2
|
5月前
|
C++
数据结构===红黑树
数据结构===红黑树
|
6月前
|
存储 算法 Java
数据结构/C++:红黑树
数据结构/C++:红黑树
41 3
|
6月前
|
测试技术 数据库
[数据结构]-红黑树
[数据结构]-红黑树

热门文章

最新文章