红黑树和B树、B+树简单介绍

5 篇文章 0 订阅

一、红黑树

        红黑树,用两种颜色标记节点;

  • 所有节点只有红黑两种颜色
  • 根节点永远是黑色的
  • 每个叶子节点(null或NIL空节点)是黑色的
  • 从一个节点到其所有子孙节点的路径上都包含一样多的黑色节点 (可确保)
  • 红色节点的孩子是黑色

        首先将红黑树当成一颗二叉查找树,把节点插入,然后对该节点进行着红色操作。着红色时一定不会违反红黑树上述的第四个特性。最后经过旋转和着色操作完善红黑树。

        

        得益红黑树的五个特性,构建红黑树时的旋转操作更加简单。

二、B树

        二叉树每个根节点只有两个子树,在数据量很大的时候,树的深度会很大。B树的存在解决了这个问题。

B树的节点包含键和值,是key-value的形式。一个节点可以包含多个key,并不确定,需要看具体实现。现在我们选择一个参数M来构建一个B树,我们可以将其称为M阶的B树。

  • 每个节点最多有M-1个key,并且以升序排列
  • 每个节点最多有M个子节点
  • 根节点至少有两个子节点

B树的构建是自下而上的,当M-1个key被占满,就会有值被挤上去。

三、B+树

        B+树和B树相似,不同的地方是只有叶子节点存储形式为key-value,其他节点存储的只有key值。树的所有叶节点构成一个有序链表,可以按照key排序的次序依次遍历全部数据。

B+ 树的优点在于:

        1.B+树在非叶子结点上不包含数据的值,只当做索引使用,因此在内存相同的情况下,能够存放更多的key。

        2.B+树的叶子结点都是相连的,因此对整棵树的遍历只需要一次线性遍历叶子结点即可。而且由于数据顺序排列并且相连,所以便于区间查找和搜索。像有索引的链表。

B树的优点在于:

        只需要找到key所在的位置,就能找到value,不用像B+树要一直找到叶子结点才能找到value。

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
、B树和二叉平衡都是常见的数据结构,用于实现高效的查找、插入和删除操作。其中,树和二叉平衡都是基于二叉的,而B则是一种多路搜索。 1. 二叉平衡 二叉平衡是一种自平衡的二叉搜索,它的左右子的高度差不超过1。这样可以保证的高度不会太高,从而保证了查找、插入和删除操作的时间复杂度都是O(log n)。常见的二叉平衡有AVL树和。 2. 是一种自平衡的二叉搜索,它的每个节点都被标记为色或色。的规则如下: (1)每个节点要么是色,要么是色。 (2)根节点是色的。 (3)每个叶子节点(NIL节点,空节点)是色的。 (4)如果一个节点是色的,则它的两个子节点都是色的。 (5)对于每个节点,从该节点到其所有后代叶子节点的简单路径上,均包含相同数目的色节点。 这些规则保证了的平衡性,从而保证了查找、插入和删除操作的时间复杂度都是O(log n)。 3. B B是一种多路搜索,它的每个节点可以有多个子节点。B的规则如下: (1)每个节点最多有m个子节点。 (2)除根节点和叶子节点外,每个节点至少有ceil(m/2)个子节点。 (3)如果根节点不是叶子节点,则至少有两个子节点。 (4)所有叶子节点都在同一层。 (5)每个节点包含k个关键字,且关键字按照升序排列。 这些规则保证了B的平衡性,从而保证了查找、插入和删除操作的时间复杂度都是O(log n)。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值