红黑树操作

前言

AVL的插入和删除操作,会频繁地调整全树的结构,代价较大。因此,在AVL的平衡标准上放宽条件,引入红黑树。

性质

定义

①每个结点是红色或者黑色
②根结点是黑色。
③每个叶子结点都是黑色的空结点(NUUL结点)。
④不存在两个相邻的红节点。(即红节点之父和红节点之子必是黑)
⑤从任一结点到其每个叶子的所有路径都包含相同数目的黑色结点。

推论

①从根节点到叶节点的最长路径不超过最短路径的两倍
②有n个内部结点的红黑树的高度 h ≤ 2 log ⁡ 2 ( n + 1 ) h\leq 2\log_2(n+1) h2log2(n+1)

插入

新插入结点定义为红色,分五种情况进行操作。
先约定一下命名规则
在这里插入图片描述

G G G是祖父结点 G r a n d f a t h e r Grandfather Grandfather
P P P是父节点 P a r e n t Parent Parent, U U U是叔结点 U n c l e Uncle Uncle
N N N是当前结点 N o w N o d e , S Now Node,S NowNode,S是兄弟结点 S i b l i n g Sibling Sibling
S L SL SL是兄弟结点的左节点 L e f t , S R Left,SR Left,SR是兄弟结点的右节点 R i g h t Right Right

情况一

N为根:

N直接染黑

在这里插入图片描述         在这里插入图片描述

情况二

P为黑

不变

在这里插入图片描述        

情况三

P为红(所以G为黑),U为红:

P染黑,U染黑,G染红,然后递归向上调整。

在这里插入图片描述         在这里插入图片描述

情况四

P为红(所以G为黑),U为黑,N的大小介于P和G

P旋转到N的下面(即N父为G,N子为P),转为情况五

在这里插入图片描述         在这里插入图片描述

情况五

P为红(所以G为黑),U为黑,P的大小介于N和G(即一头偏)

P旋转到G的上方(即P子为NG),P染黑,G染红

在这里插入图片描述         在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值