红黑树的插入

原创 2015年07月11日 01:50:46

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

首先,我们设当前插入节点为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的颜色。


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


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

红黑树插入操作超详解

说明:1. 下述图片多参照网上资源(July红黑树)或者电子书资源(STL源码剖析)等              2. 个人感觉STL中思路以及实现方式比其他版本都易懂,建议大家好好琢磨 参考...

红黑树插入-自己总结篇

红黑树插入总是令部分同学困惑,今天我将整个过程整理一下,也希望能帮助到大家。...
  • jdbc
  • jdbc
  • 2015年01月18日 23:09
  • 1067

红黑树插入和删除原理

红黑树本质是一颗二叉查找树,增加了着色以及相关的性质,使得红黑树的查找,插入,删除的时间复杂度最坏为O(log n)。 一、红黑树相对二叉查找树来说,有以下五个性质。 a.红黑树的节点不是红色就是...

红黑树以及插入

红黑树的概念 红黑树的五个基本特性: In additionto the requirements imposed on a binary search trees, withred–black t...

红黑树的添加删除操作

来自: http://hi.baidu.com/coolinc/blog/item/3aa07f3e162502eb54e723b1.html介绍另一种平衡二叉树:红黑树(Red Black Tree...
  • Very_2
  • Very_2
  • 2010年07月09日 10:57
  • 17257

红黑树的插入与删除说明

  • 2016年04月15日 18:59
  • 581KB
  • 下载

红黑树从头至尾插入和删除结点的全程演示图

                     红黑树插入和删除结点的全程演示作者:July、saturnman。时间:二零一一年三月二十八日。声明:版权所有,侵权必究。------------------...
  • v_JULY_v
  • v_JULY_v
  • 2011年03月28日 17:13
  • 61176

红黑树插入删除算法

  • 2014年09月27日 11:27
  • 4KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:红黑树的插入
举报原因:
原因补充:

(最多只允许输入30个字)