肖恒的专栏

记载着点点滴滴

红黑树的插入

红黑树,是使用得非常多的一种自平衡二叉树,这里讲解一下红黑树的插入(关于红黑树的概念以及旋转这里不进行说明)

首先,我们设当前插入节点为u,其父节点为pu,其祖父节点为gu,其父节点的兄弟节点(即其叔节点)为gr。

接下来分情况讨论:

一、当树为空树时,u为根节点。

二、当树不为空时,再分情况讨论:

1.当pu节点为黑时,u插入,着红色。

2.当pu节点为红时,再分情况(gr的颜色及u,pu的位置):

1)当gr为红色时:插入情况可以分为四种(如下图),插入之后只需要对树进行重新着色。

下面四中情况都只需要把gu变成红色,把pu、gr变成黑色就行了。


重新着色之后情况如下:


2)当gr为黑色时:插入情况可以分为四种(如下图),插入之后需要对树进行旋转以及重新着色。

第一种:gu节点右旋,交换pu、gu的颜色。第二种:pu节点左旋,再gu节点右旋,交换u、gu的颜色。

      第三种:gu节点左旋,交换pu、gu的颜色。第四种:pu节点右旋,再gu节点左旋,交换u、gu的颜色。


旋转及重新着色之后结果如下:


阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010350904/article/details/46838097
文章标签: 红黑数 算法
个人分类: 我的算法之路
上一篇数的全排列
下一篇关于C语言中结构体定义的一个小问题
想对作者说点什么? 我来说一句

红黑树插入算法

2011年11月14日 154KB 下载

没有更多推荐了,返回首页

关闭
关闭