红黑树的介绍及定义

一、红黑树的来历

平衡二叉树最大的作用就是查找,AVL树的查找、插入和删除在平均和最坏情况下都是O(logn)。但是如果在AVL树中插入或删除节点后,使得某一结点的平衡因子>=2。此时,AVL树的平衡状态就被破坏,它就不再是一棵二叉树;为了让它重新维持在一个平衡状态,就需要对其进行旋转处理, 那么创建一颗平衡二叉树的成本其实不小. 这个时候就有人开始思考,并且提出了红黑树的理论,

二、红黑树的定义

1.每个节点不是红色就是黑色

2.根节点是黑色

3.每个叶子节点(NIL节点,空节点)是黑色的

4.如果一个节点是红色的,则他的子节点必须是黑色的

5.从一个节点到该节点的所有子孙节点的所有路径上包含相同数目的黑色节点

  注意

1.特性3中的叶子节点,是只为空 (NIL或null)的节点 2.特性5,确保没有一条路径会比其他路径长两倍,因而,红黑树是相对接近平衡的二叉树。

三、红黑树的生成

第一步:将红黑树当成一颗有序二叉树,将节点插入。

红黑树本身就是一颗有序二叉树,将节点插入后,该树仍然是一颗有序二叉树。这也意味着,树的键值仍然是有序的。

第二步:将插入的节点着色为“红色”。

 为什么是红色呢?在回答这个问题之前我们需要先复习一下红黑树的特性。

特性5:从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑色节点

将插入的节点写为红色,就不会违背特性5,少违背一条特性,也就意味着我们需要处理的情况也就越少。接下来我们只需要将这颗二叉树满足其他的特性即可。

第三步:通过一系列的旋转和着色操作,使之成为一颗红黑树

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值