数据结构===红黑树

简介: 红黑树是平衡二叉搜索树,关键点在于其满足5个性质,包括根节点为黑,叶子为黑,红色节点不能相邻且路径上黑节点数相等。插入和删除时结合左旋、右旋操作。插入时,针对叔叔节点颜色(红或黑),参照AVL树的失衡处理,分为4种情况,并调整颜色策略。删除操作同样复杂,涉及节点替换和颜色调整。

概要
这篇说下红黑树
其实,红黑树,对于我来说,比较重要的几点。

满足几个条件
基本思想
插入
删除
这些是很重要的。
满足的条件
红黑树需要满足什么条件呢?
应该有四个,如下:

节点非黑既红
根节点是黑色
叶子(NIL)结点是黑色
红色节点下面接两个黑色节点
从根节点到叶子结点路径上,黑色节点数量相同
基本思想
这个,除了上边四个条件;还要有2个操作,左旋和右旋。
有了这些条件,再加上左旋右旋操作,接下来看看红黑树的插入,删除。
红黑树的插入
叔叔节点为红色的时候,修改三元组小帽子,改成红黑黑
叔叔节点为黑色的时候,参考 AVL 树的失衡情况,分成 L L , L R , R L , R R LL,LR,RL,RRLL,LR,RL,RR, 先参考 AVL 树的旋转调整策略,然后再修改三元组的颜色,有两种调整策略:红色上浮,红色下沉。
两大类情况,包含 8 种小情况

目录
相关文章
|
4天前
|
算法 C++
【数据结构与算法】—— 手撕红黑树
【数据结构与算法】—— 手撕红黑树
|
4天前
|
存储 Java 数据库
手撕红黑树 - 聊聊这个基本却又重要的数据结构
手撕红黑树 - 聊聊这个基本却又重要的数据结构
22 0
|
4天前
|
存储 关系型数据库 数据库
【数据结构】—红黑树(C++实现)
【数据结构】—红黑树(C++实现)
|
7月前
|
存储 Java 数据库
【红黑树数据结构及其应用】
【红黑树数据结构及其应用】
|
7月前
|
存储
数据结构之二叉查找树(Binary Search Tree)和红黑树(Red Black Tree)
二叉查找树又可以称之为 : 二叉搜索树 , 二叉排序树 , 它或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不空,则左子树上所有结点的值均小于它的根节点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势 , 下图中这棵树,就是一棵典型的二叉查找树
117 1
|
7月前
|
关系型数据库
|
4天前
|
存储 算法 Java
数据结构/C++:红黑树
数据结构/C++:红黑树
15 3
|
4天前
|
存储 缓存 算法
数据结构与算法 树(B树,B+树,红黑树待完善)
数据结构与算法 树(B树,B+树,红黑树待完善)
16 0
|
4天前
|
测试技术 数据库
[数据结构]-红黑树
[数据结构]-红黑树
|
4天前
|
Java
数据结构奇妙旅程之红黑树
数据结构奇妙旅程之红黑树