部分数据结构--红黑树,B树,B+树

本文详细介绍了红黑树的性质、插入删除操作,以及B树和B+树的概念与特性,包括它们的节点数量限制和插入删除策略。通过对红黑树的旋转操作和B树、B+树的数据分布理解,展示了这些数据结构在存储和检索上的优势。
摘要由CSDN通过智能技术生成

一. 红黑树
红黑树是自平衡的二叉搜索树。搜索的时间复杂度是logN。插入,删除,旋转,染色的操作时间复杂度都是O(logN);每个节点只需要用一个bit来保存颜色(颜色仅为红黑两种)属性。
红黑树的每个节点有五个域(color,key,lchild,rchild,parent)。它会保存父节点的指针。
红黑树具有以下五个性质
①红黑树的节点必须是红色或者黑色。
②根节点必须是黑色
③叶节点是黑色的(这里的叶节点,不是传统意义上的树的页节点,而是说最下层的空节点,也就是传统意义上的叶节点的子节点。默认为黑色)
④红色节点必须有两个黑色节点的儿子
⑤从任一节点出发到其每个叶子节点的路径,黑色节点的数量是相等的。

手打太繁琐,关于红黑树下面的内容转自http://www.cnblogs.com/v-July-v/archive/2010/12/29/1983707.html
树的旋转知识

当我们在对红黑树进行插入和删除等操作时,对树做了修改,那么可能会违背红黑树的性质。

为了保持红黑树的性质,我们可以通过对树进行旋转,即修改树种某些结点的颜色及指针结构,以达到对红黑树进行

插入、删除结点等操作时,红黑树依然能保持它特有的性质(如上文所述的,五点性质)。

树的旋转,分为左旋和右旋,以下借助图来做形象的解释和介绍,这个旋转和平衡二叉树的旋转类似:

1.左旋

这里写图片描述

如上图所示:

当在某个结点pivot上,做左旋操作时,我们假设它的右孩子y不是NIL[T],pivot可以为树内任意右孩子而不是NIL[T]的结点。

左旋以pivot到y之间的链为“支轴”进行,它使y成为该孩子树新的根,而y的左孩子b则成为pivot的右孩子。

来看算法导论对此操作的算法实现(以x代替上述的pivot):

LEFT-ROTATE(T, x)
1 y ← right[x] ▹ Set y.
2 right[x] ← left[y] ▹ Turn y’s left subtree into x’s right subtree.

3 p[left[y]] ← x
4 p[y] ← p[x] ▹ Link x’s parent to y.
5 if p[x] = nil[T] <

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值