STL源码剖析 关联式容器 树 红黑树、二叉搜索树、平衡二叉搜索树

53 篇文章 1 订阅
本文详细介绍了STL中的关联式容器,如红黑树(RB-tree),强调它们不同于顺序容器的特性,如无头尾之分,不支持push_back等操作。关联式容器依据键值进行元素排序,提供高效查找。红黑树作为一种常见的实现方式,其内部结构和平衡策略确保了良好的搜索性能。在插入节点时,需要遵循RB-tree规则并保持树的平衡。
摘要由CSDN通过智能技术生成

  •  所谓关联式容器,观念上类似关联式数据库(实际上则简单许多):每笔数据(每个元素)都有一个键值(key)和一个实值(value) 2。当元素被插入到关联式 容器中时,容器内部结构(可能是RB-tree,也可能是hash-table)便依照其键 值大小,以某种特定规则将这个元素放置于适当位置.
  • 关联式容器没有所谓头尾(只有最大元素和最小元素),所以不会有所谓push_back()、push_f ront ()、 pop_back()、pop_f ront () . begin。、end() 这样的操作行为。
  • 一般而言,关联式容器的内部结构是一个balanced binary tree (平衡二叉树),以便获得良好的搜寻效率.balanced binary tree有许多种类型,包 括 AVL-tree.RB-tree、AA-tree,其中最被广泛运用于S T L 的是RB-tree (红黑树)。为了探讨 S T L 的关联式容器,我必须先探讨RB-tree.

  • size 节点数量,包含自身
  • height 叶子节点是0,逐个向上递增
  • depth 根节点是0,逐个向下递增
  • length 从根节点到 计算节点之间的边的个数

二叉搜索数

 

 

 

 

 

 源码这一块 已经懵逼

 类似链表中的dummptynode,他的作用使得 对于头结点的操作和其余的节点操作是一致的

  •  接下来,每当插入新节点时,不但要依照RB-tree的规则来调整,并且维护 header的正确性,使其父节点指向根节点,左子节点指向最小节点,右子节点指 向最大节点。节点的插入所带来的影响,是下一小节的描述重点。

 

 

 左右子树高度相差为2时,会进行平衡,赋值仅仅改变颜色即可

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值