0
点赞
收藏
分享

微信扫一扫

红黑树特性及节点插入规则

仲秋花似锦 2022-04-13 阅读 62
数据结构

红黑树

平衡效率没有AVL好

插入删除少,查找多的时候,用AVL。

插入删除多,查找少的时候,用红黑树。

特性

性质1. 结点是红色或黑色。

性质2. 根结点是黑色。

性质3. 所有叶子都是黑色。(叶子是NIL结点)

性质4. 每个红色结点的两个子结点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色结点)

性质5. 从任一结点到其每个叶子的所有路径都包含相同数目的黑色结点。

红黑树高度h不超过2log2(n+1),证明省略。

插入节点规则

对于新插入的节点,先置为红色

在这里插入图片描述
例子,空树插入以下节点:35、75、65、56、78、29、41、37、38。

1.插入节点35,父节点为空null,将节点35颜色置为black
在这里插入图片描述
2.插入节点75,父节点为black,直接插入
在这里插入图片描述
3.插入节点65,如图1;
此时,父节点red,叔节点black,RL类型,根据规则,先右旋,此时父节点75当作新插节点如图2;
此时,父节点red,叔节点black,RR类型,根据规则,父节点65置为black,祖父节点35置为red,然后进行左旋,得到图三。

在这里插入图片描述
4.插入节点56,如图1;
此时,父节点red,叔节点red,根据规则祖父节点置red,父节点和叔节点置black,将祖父节点65当作新插节点,如图2;
此时,根据规则,父节点为null,将节点65置black,如图3
在这里插入图片描述
5.插入节点78,父节点为black,直接插入。
在这里插入图片描述
6.插入节点29,父节点为black,直接插入。
在这里插入图片描述
7.插入节点41,如图1;
此时,父节点red,叔节点red,根据规则祖父节点置red,父节点和叔节点置black,将祖父节点35当作新插节点,如图2;
由于节点35的父节点为black,无需操作。
在这里插入图片描述
8.插入节点37,如图1;
此时,父节点red,叔节点black,类型LL,根据规则,父节点变黑,祖父节点变红,然后右旋,如图2;
在这里插入图片描述
9.插入节点38,如图1;
此时,父节点red,叔节点red,根据规则,祖父节点变红,父节点和叔节点变黑,将祖父节点41当作新插节点,如图2;
此时,父节点red,叔节点black,LR类型,根据规则,先左旋,然后父节点35当作新插入节点,如图3;
此时,父节点red,叔节点black,LL类型,根据规则,父节点变黑,祖父节点变红,右旋,如图4;
在这里插入图片描述

至此,插入完成,一个红黑树构建完毕。

参考
https://www.cnblogs.com/woniu4/p/8086707.html

举报

相关推荐

0 条评论