红黑树的添加

红黑树的基本概念

平衡二叉树

在了解红黑树之前,首先要了解一下什么是平衡二叉树。平衡树(Balance Tree,BT) 指的是,一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树也都是一棵平衡二叉树。

红黑树

红黑树就是一种特殊的平衡二叉树,那么他就存在着平衡二叉树的特点,同时他也存在自己特有的特点。相对一般的平衡二叉树来说,他在基本的平衡二叉树中添加了着色(红色和黑色)和相关的一些性质,使得红黑树平衡。

红黑树具体具有的特征:
性质1.结点存在颜色(只能是红和黑);
性质2.根节点必须是黑色;
性质3.每个叶子结点(指树尾端的NULL或者NIL结点)是黑色的;
性质4.每个红色结点的子结点必须为黑色(不能两个红色结点相连,可以两个黑色相连);
性质5.对任意结点而言,它到子树的叶节点尾端NIL指针的路径包含相同数目的黑结点。

红黑树添加元素的情况以及实现平衡

插入过程首先是根据一般二叉查找树的插入步骤, 把新节点 z 插入到 某个叶节点的位置上,然后将 z 着 为红色。 为了保证红黑树的性质能继续保持,再对有关节点重点着色并旋转,(以左子树为例)其插入情况如下:
第一种情况:当前为一颗空树,我们插入的结点为根节点,
此时插入为根节点,但是和性质2 违背,所以这时候,我们的对策就是直接将这个结点改为黑色就可以了。
第二种情况:插入的结点的父节点为黑色,这时候就可以直接插入结点。
第三种情况:父节点为红色,且祖父结点的另外一个子节点(叔结点)也是红色。此时插入结点,会造成两个红色结点相连。与性质4相违背。
这时候我们就将父节点和叔结点都改为黑色,并且将祖父结点改为红色(将两个同时设置为黑色,且祖父结点设置为红是为了保证性质5)。
第四种情况:当前结点的父节点为红色,其叔结点为黑色,当前结点为父节点的右结点。此时我们将当前结点的父节点为新的当前结点,以型的当前结点左旋。
第五种情况:当前结点的父节点为红色,其叔结点为黑色,当前结点为父节点的左结点。此时我们将当前结点的父节点变为黑色,祖父结点变为红色,祖父结点为支点右旋。
一般来说,第四、第五种情况都是在第三种情况后的插入修复操作,所以我们可以将第三,四,五种情况当做一种完整的插入修复的操作流程。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值