红黑树操作

Posted Keep--Silent

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了红黑树操作相关的知识,希望对你有一定的参考价值。

前言

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染红

       

以上是关于红黑树操作的主要内容,如果未能解决你的问题,请参考以下文章

001 红黑树之 原理和算法详细介绍

红黑树

图解集合 8 : 红黑树的移除节点操作

红黑树:删除操作

红黑树详解——数据删除操作

红黑树平衡二叉查找树