红黑树的插入

一 概述

根据红黑树对二叉搜索树的一种平衡策略,保证当前结点比自己的父结点小(当前结点为父结点的左结点)或者保证当前结点比自己的父结点大(当前结点为父结点的右结点)。

二 红黑树的插入

红黑树的插入操作可以理解为以下几部分工作:

  1. 查找插入的位置。
  2. 查找到需要插入的位置之后进行插入。
  3. 把数据插入到目标位置之后然后实现自平衡。

红黑树插入操作的实际步骤:

  1. 从根节点开始查找。
  2. 如果根节点为空,则将插入的结点作为根节点,插入操作完成。
  3. 如果根节点不为空,将根节点作为当前节点,继续搜索下一个当前节点,如果当前结点为空,则返回当前结点的父结点,插入操作完成。
  4. 如果当前结点的key等于所查找的key,那么将该key所在结点就是插入结点,更新结点的值,插入操作完成。
  5. 如果当前结点的key大于所查找的key,那么将当前结点的左子结点设置为当前结点,并重复步骤4。
  6. 如果当前结点的key小于所查找到key,那么将当前结点的右子结点设置为当前结点,并重复步骤4。

上述内容让我们成功的完成了红黑树插入位置查询的操作,可是红黑树种的每个节点都是有颜色的,其实插入颜色应该是红色,因为红色节点的父节点为黑色黑色节点才能够保证红黑树的平衡。当插入的节点为黑色节点的时候无法满足红黑树的性质,即对于红黑树中的每个结点,从该结点到其所有后代叶子结点的简单路径上,均包含相同数目的黑色结点。

三 红黑树的插入场景

重要插入场景分析

场景二:当插入节点的可以已经存在的时候,说明该红黑树已经是平衡状态,因为红黑树总是保持平衡状态。但是插入后更新值的同时会将插入节点的颜色设置为该位置新插入节点的颜色。

场景三:因为插入节点的父亲节点为黑节点,插入的节点为红节点,所以不会破坏红黑树的平衡,可以直接插入。

注意:上述场景均为先找到插入点,将插入节点插入后根据红黑树的性质对红黑树进行平衡状态分析,并进行相应的左旋,右旋操作(红黑树在插入节点前本来就是平衡状态,所以在插入后重新使其平衡)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值