B数和B+树、红黑树数据结构的特点
一个m阶的B树(m阶就是含有m个分杈)
特点:
1、根节点的孩子个数至少为2个
2、除根结点和叶子结点外,其它每个结点至少有[ceil(m / 2)]个孩子,至多含有m个孩子
其中ceil(x)是一个取上限的函数,结合1,2特点,除根结点和叶子结点外,每个节点含有[m/2<,m]
3、每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m
4、所有叶子结点都出现在同一层,
5、每个节点中的元素从小到大排列
一个m阶的B+树(m阶就是含有m个分杈)
特点:
1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。
2.所有的叶子结点中包含了全部元素的信息,且叶子结点本身依关键字的大小自小而大顺序链接。
3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。
B+树与B-树对比
相比B-树:由于B+树的中间节点不存在data数据,所以相同单个页能存储更多的节点元素信息,因此B+树比B-树更'矮胖',因此IO磁盘次数更少。其次,B+树必须找到叶子节点,但B-树不需要,因为中间节点存储元素,如果找到直接返回,无需到叶子节点。
B-树的范围查询是依靠树的中序遍历进行查询的,相比B+树来说,B+树直接进行叶子节点遍历即可,因此B-树范围查询性能会低一点。
红黑树的5个性质
如下图所示,即是一颗红黑树(下图引自wikipedia:http://t.cn/hgvH1l):
1.每个结点要么是红的要么是黑的。
2.根结点是黑的。
3.每个叶子结点(叶结点即指树尾端NIL指针或NULL结点)都是黑的。
4.如果一个结点是红的,那么它的左右儿子都是黑的。
5.对于任意结点而言,其到叶结点树尾端NIL指针的每条路径都包含相同数目的黑结点。
红黑树的查找、插入、删除的时间复杂度最坏为O(log n)
红黑树和自平衡二叉(查找)树区别1、红黑树放弃了追求完全平衡,追求大致平衡,在与平衡二叉树的时间复杂度相差不大的情况下,保证每次插入、删除最多只需要三次旋转就能达到平衡,实现起来也更为简单。2、平衡二叉树追求绝对平衡,条件比较苛刻,实现起来比较麻烦,每次插入新节点之后需要旋转的次数不能预知。
B数和B+树、红黑树数据结构的特点相关推荐
- 【Linux 内核】CFS 调度器 ⑥ ( CFS 调度器就绪队列 cfs_rq | Linux 内核调度实体 sched_entity | “ 红黑树 “ 数据结构 rb_root_cached )
文章目录 一.CFS 调度器就绪队列 cfs_rq 二.Linux 内核调度实体 sched_entity 三." 红黑树 " 数据结构 rb_root_cached 一.CFS ...
- C++ 第八节数据结构 第七节 ——二叉搜索树 AVL树 红黑树(底层原理图+模拟实现)
第一次,C++和数据结构联合推出,倾情献上呦~~ 给个关注吧 23333~~~~~~(现在每天系统就给我一个机器人的粉丝量了55555~~~~~) 本节内容,我们将着重来探讨 二叉树 中特殊的两种树- ...
- 《漫画算法2》源码整理-1 二分查找树 AVL树 红黑树
二分查找树 public class BinarySearchTree {private Node root;//查找结点public Node search(int data) {Node targ ...
- STL源码剖析 关联式容器 树 红黑树、二叉搜索树、平衡二叉搜索树
所谓关联式容器,观念上类似关联式数据库(实际上则简单许多):每笔数据(每个元素)都有一个键值(key)和一个实值(value) 2.当元素被插入到关联式 容器中时,容器内部结构(可能是RB-tree, ...
- 数据结构中的树 --- 红黑树
红黑树是一种几近平衡的二叉搜索树, 但不是AVL树. 1 红黑树的一些特殊性质 1. 每个节点皆为红色或者黑色. 2. 根节点是黑色. 3. 每个叶子节点(NIL)是黑色(注意, 每个叶子节点必须都为 ...
- 0202插入删除-算法第四版红黑树-红黑树-数据结构和算法(Java)
文章目录 4 插入 4.1 序 4.2 向单个2-结点插入新键 4.3 向树底部的2-结点插入新键 4.4 向一棵双键树(3-结点)中插入新键 4.5 颜色调整 4.6 根结点总是黑色 4.7 向树底 ...
- 01基础-算法第四版红黑树-红黑树-数据结构和算法(Java)
文章目录 1 前言 2 定义 2.1 替换3-结点 2.2 等价定义 2.3 一一对应 3 基础 3.1 颜色表示 3.2 结点表示 3.2 旋转 3.3 旋转后重置父结点的链接 后记 1 前言 目前 ...
- 高级数据结构与算法 | 红黑树(Red-Black Tree)
文章目录 红黑树 红黑树的概念 红黑树的性质 红黑树与AVL树 红黑树的实现 红黑树的节点 红黑树的插入 红黑树的查找 红黑树的验证 完整代码 红黑树 红黑树的概念 红黑树,是一种二叉搜索树,但在每个 ...
- 《恋上数据结构第1季》红黑树(未完)
红黑树(Red Black Tree) 红黑树介绍 红黑树 与 4阶B树 红黑树 与 2-3-4树 等价转换 红黑树基础代码 完整的红黑树系列代码(恐怖如斯) 二叉树 BinaryTree.java ...
最新文章
- 用EXCEL实现时间戳格式和日期格互转
- 图形处理(十二)拉普拉斯网格优化、最小二乘网格模型光顺
- Django框架连接MySQL数据库
- 记录一次Socket的异常:InputStream.read()阻塞问题
- 错误: 找不到或无法加载主类 org.apache.hadoop.hbase.util.GetJavaProperty
- Java 文件 IO 操作
- C++ 二进制文件写操作
- 6-6 归并排序(递归法) (10分)
- 【Fllink】Connection to ZooKeeper suspended. Can no longer retrieve the leader from ZooKeeper
- 120 -算法 - 枚举 数学类 4138:质数的和与积
- java根据微信小程序code获取用户openId
- 微信小程序模板消息推送
- pe擦除服务器硬盘,如何使用老毛桃winpe的分区助手安全擦除移动硬盘或本地硬盘数据?...
- WebLogic安装说明
- 计算机考研复试题(近十万字)
- 【sketchup 2021】草图大师的场景优化工具3【新建材质、材质编辑面板的详细说明】【重要】
- CAD使用圆,椭圆,直线综合练习
- 使用Adobe illustrator (AI)快速制作图标
- 2019年机器学习/ 深度学习热门论文集锦
- PMP续证费用和流程