【数据结构】 红黑树

一、概念

Red-Black Tree 简称 R-B Tree,是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。

二、特性

(1)每个节点或者是黑色,或者是红色。
(2)根节点是黑色。
(3)每个叶子节点(NIL)是黑色。
(4)每个红色节点的子节点都是黑色。
(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。

注意:
(3)中 叶子节点,是指为空(NIL节点,空节点)的叶子节点。
这些约束强制了红黑树的关键性质: 从根到叶子的最长的可能路径不多于最短的可能路径的两倍长。

三、应用

红黑树的应用比较广泛,主要是用它来存储有序的数据,它的时间复杂度是O(lgn),效率非常之高。

四、基本操作

1、添加

1)、将红黑树当作一颗二叉查找树,将节点插入。
2)、将新插入的节点着色为"红色"。
3)、经过一系列的旋转或着色操作,使成为满足五点特性的红黑树。

2、删除

1)、将红黑树当作一颗二叉查找树,将节点删除。
2)、经过一系列的旋转或着色操作,使成为满足五点特性的红黑树。

五、旋转

基本操作需要知道什么是旋转,下面具体说一下,旋转包括 左旋、右旋

1、左旋

在这里插入图片描述

说明一下

1)、如图Y为X的右孩子。
2)、将Y的左孩子设为X的右孩子,即将b设为X的右孩子。
3)、将X设为Y的左孩子的父亲,即将b的父亲设为X。
4)、将X的父亲设为 Y的父亲(这里X的父亲是空节点,因此将Y设为根节点)。
5)、将X设为Y的左孩子。
6)、将X的父节点设为Y。
注:4)还有其他两种情况(如果X是它父节点的左孩子,则将Y设为X的父节点的左孩子;如果X是它父节点的右孩子,则将Y设为X的父节点的右孩子)。

2、右旋

在这里插入图片描述

说明一下

1)、如图Y的左孩子为X。
2)、将X的右孩子设为Y的左孩子,即将b设为Y的左孩子。
3)、将Y设为X的右孩子的父亲,即将b的父亲设为Y。
4)、将Y的父亲设为X的父亲(这里Y的父亲是空节点,因此将X设为根节点)。
5)、将Y设为X的右孩子。
6)、将Y的父节点设为X。
注:4)还有其他两种情况(如果Y是它父节点的右孩子,则将X设为Y的父节点的右孩子;如果Y是它父节点的左孩子,则将X设为Y的父节点的左孩子)。

猜你喜欢

转载自blog.csdn.net/luobo_666/article/details/82845765
今日推荐