2018.9.12 B树总结
1. B-Tree
B-树是一种平衡的多路查找树,它在文件系统中很有用。
1.1 B-Tree 特性
- 关键字集合分布在整颗树中;
- 任何一个关键字出现且只出现在一个结点中;
- 搜索有可能在非叶子结点结束;
- 其搜索性能等价于在关键字全集内做一次二分查找;
- 自动层次控制;
1.2 B-Tree搜索原理
B-树的搜索,树中查找结点,结点中查找关键字。
即从根结点开始,对结点内的关键字(有序)序列进行二分查找,如果命中则结束,否则进入查询关键字所属范围的儿子结点;重复,直到所对应的儿子指针为空,或已经是叶子结点;因此,B-Tree的查找过程是一个顺指针查找结点和在结点的关键字中进行查找的交叉进行的过程。
2. B+Tree
B+树是应文件系统所需而产生的一种B-树的变形树。
2.1 B+Tree特性
B+Tree的搜索与B-Tree也基本相同,区别是B+Tree只有达到叶子结点才命中(B-Tree可以在非叶子结点命中),其性能也等价于在关键字全集做一次二分查找;
- 所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的;
- 不可能在非叶子结点命中;
- 非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层;
- 更适合文件索引系统
2.2 B+Tree与B-Tree区别
- 非叶子结点的子树指针与关键字个数相同;
- 非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树(B-树是开区间);
- 为所有叶子结点增加一个链指针;
- 所有关键字都在叶子结点出现;
2.3 对B+树进行两种搜索运算
- 循叶结点链顺序搜索
- 另一种是从根结点开始,进行自顶向下,直至叶结点的随机搜索。
3. B*Tree
B*Tree是B+树的变体,在B+Tree的非根和非叶子结点再增加指向兄弟的指针;B*树分配新结点的概率比B+树要低,空间使用率更高,将结点的最低利用率从1/2提高到2/3。
参考:《B-Tree, B+Tree, B*树介绍》:http://blog.sina.com.cn/s/blog_6776884e0100ohvr.html
2018.9.12 B树总结的更多相关文章
- 2018年12月8日广州.NET微软技术俱乐部活动总结
吕毅写了一篇活动总结,写得很好!原文地址是:https://blog.walterlv.com/post/december-event-microsoft-technology-salon.html ...
- 2018.5.12 storm数据源kafka堆积
问题现象: storm代码依赖4个源数据topic,2018.5.12上午8点左右开始收到告警短信,源头的4个topic数据严重堆积. 排查: 1.查看stormUI, storm拓扑结构如下: 看现 ...
- Artificial Intelligence Computing Conference(2018.09.12)
时间:2018.09.12地点:北京国际饭店会议中心
- China Internet Conference(2018.07.12)
中国互联网大会 时间:2018.07.12地点:北京国家会议中心
- 20172319 2018.10.12《Java程序设计教程》第6周课堂实践(补写博客)
20172319 2018.10.12 <Java程序设计教程>第6周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...
- 新手C#SQLServer在程序里实现语句的学习2018.08.12
从C#中连接到SQL Server数据库,再通过C#编程实现SQL数据库的增删改查. ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据 ...
- [2018-11-27]2018年12月1日宁波dotnet社区线下活动
离上次活动,转眼又过了一个月,幸得各路大神支持,于本周六(12月1日),宁波dotnet社区的线下分享活动又来啦! 活动嘉宾及主题 董斌辉 2015-2019年微软全球最有价值专家(.NET方向) 2 ...
- 2018.10.12 bzoj4712: 洪水(树链剖分)
传送门 树链剖分好题. 考虑分开维护重儿子和轻儿子的信息. 令f[i]f[i]f[i]表示iii为根子树的最优值,h[i]h[i]h[i]表示iii重儿子的最优值,g[i]g[i]g[i]表示iii所 ...
- 2018.10.12 NOIP模拟 数据结构(线段树)
传送门 sb线段树题居然还卡常. 修改操作直接更新区间最小值和区间标记下传即可. 询问加起来最多5e65e65e6个数. 因此直接询问5e65e65e6次最小值就行了. 代码
随机推荐
- java求0~100的质数(素数)
质数的概念: 简单的来说就是一个数从2开始取模到(求余数)自身的值,如果取模后余数一直不等于0那么这个数就是质数(素数). 如 7 7%2 7%3 7%4 7%5 7%6 ...
- PHP多进程的实际处理
多进程应用大批量的数据是非常舒服的一件事情. 处理之前理解两个概念:孤儿进程和僵尸进程 孤儿进程: 是指父进程在fork出子进程后,自己先完了.这个问题很尴尬,因为子进程从此变得无依无靠.无家可归,变 ...
- FastReport导出PDF乱码的问题
1.电脑查看乱码,替换文本控件,使用RichObject,而不使用TextObject 2.电脑查看正常,手机查看乱码,导出的时候选择包含字体: Enbeded Fonts勾选框
- Python语言:Day11练习题
24.实现一个整数加法计算器:如:content=input('请输入内容:')#如:5+9或5+ 9或5 + 9 content = input("请输入需要计算的:") #如: ...
- jq后加标签的事件(live事件)
在使用中 live可以对未来元素起作用(比如:js后加的div等) live在jq1.9以上版本已经废除 原:$('#del').live('click',function(){}) 改:$(' ...
- Java容器解析系列(10) Map AbstractMap 详解
前面介绍了List和Queue相关源码,这篇开始,我们先来学习一种java集合中的除Collection外的另一个分支------Map,这一分支的类图结构如下: 这里为什么不先介绍Set相关:因为很 ...
- Excel 使用单元格的值 查询MySQL数据库并返回数据给相应的单元格
Dim MyConn As ObjectPrivate Sub ConnectDB()Set MyConn = CreateObject("ADODB.Connection") ...
- Hibernate原理及应用
Hibernate工作原理及为什么要用? 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.x ...
- Codeforces Round #551 (Div. 2) D. Serval and Rooted Tree (树形dp)
题目:http://codeforces.com/contest/1153/problem/D 题意:给你一棵树,每个节点有一个操作,0代表取子节点中最小的那个值,1代表取子节点中最大的值,叶子节点的 ...
- linux虚拟机关机、重启命令
linux虚拟机关机.重启命令 一.shutdown 1.shutdown -h now :立即关机 2.shutdown -h 10:53:到10:53关机 3.shutdown -h +10 ...