红黑树的插入与删除(一)

红黑树作为同样提供O(log n)查询的树结构,通常用于关联数组的使用中,相对于AVL树,在插入和删除操作中能够以更少的调节操作来位置平衡,AVL树的平衡唯一标准就是其高度,
摘要由CSDN通过智能技术生成

红黑树定义

红黑树作为同样提供O(log n)查询的树结构(其实准确点说不是log n,红黑树虽然是平衡树,但是没有AVL树那么平衡),通常用于关联数组的使用中,相对于AVL树,在插入和删除操作中能够以更少的调节操作来位置平衡,AVL树的平衡唯一参考标准就是其高度,在插入和删除节点时需要检查调整在搜索路径上造成的“影响”,可能需要多个调整步骤来维持树的平衡。

红黑树的节点具有一个颜色属性,平衡是根据其定义的五个特性来维持的:

1.节点颜色为红或者为黑

2.根节点为黑

3.叶子节点为黑(叶子作为结束标志,可以以空表示或者自定义实体节点作为结束标志,后面树中没有画出来)

4.红色节点必须有两个黑色子节点(子节点可以为结束标志)

5.任一节点出发到叶节点路径上包含相同数量的黑色节点

提前预告:最重要的就是特性4,5,因为后续的插入节点操作主要依靠特性4来调整平衡,删除节点操作主要依靠特性5来调整平衡。整个后面的操作都是依赖这5条要求,所以一定要记熟了(下面会反复提,帮助记忆)。

调整概念

由这5个特性要求可以看出,红黑树的平衡调节操作有两种类型:

1.节点变色

2.子树旋转

相对于AVL树,调节操作较少,能够提供良好的统计性能(插入最多旋转两次,删除最多旋转三次,节点变色不提)。因为保证的是更大范围上的平衡(颜色+高度),AVL树的平衡(高度),所以需要考虑的情况就相对比较多,不只是AVL树中的左旋,右旋。

(1) 关于颜色要求,之前特性4说过,红不能与红相邻,意思就是红色节点父节点只能为黑,子节点只能为黑。也就是说红黑树中存在节点为红时,则父节点必存在且为黑,子节点若存在则必为黑,不存在也可,因为叶子节点也是黑色。

(2) 关于高度要求,能够保证一条路径上的高度不能超过另一条路径高度的两倍。两倍的情况:一个为纯黑路线,一个为黑红交替路线,有图有真相:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值