“b数”(B树)是个怎么回事
要说B树(balance tree),首先需要了解的是二叉树(binary tree)
简单说一下B树产生的原因。B树是一种查找树,我们知道,这一类树(比如二叉查找树,红黑树等等)最初生成的目的都是为了解决某种系统中,查找效率低的问题。B树也是如此,它最初启发于二叉查找树,二叉查找树的特点是每个非叶节点都只有两个孩子节点。然而这种做法会导致当数据量非常大时,二叉查找树的深度过深,搜索算法自根节点向下搜索时,需要访问的节点也就变的相当多。如果这些节点存储在外存储器中,每访问一个节点,相当于就是进行了一次I/O操作,随着树高度的增加,频繁的I/O操作一定会降低查询的效率。
二叉树:
定义:平衡二叉树是基于二分法的策略提高数据的查找速度的二叉树的数据结构
特点:(1)非叶子节点只能允许最多两个子节点存在。
(2)每一个非叶子节点数据分布规则为左边的子节点小当前节点的值,右边的子节点大于当前节点的值(这里值是基于自己的算法规则而定的,比如hash值);
(3)树的左右两边的层级数相差不会大于1;
(4)没有值相等重复的节点;
B树
定义:B树和平衡二叉树稍有不同的是B树属于多叉树又名平衡多路查找树(查找路径不只两个)
特点: (1)排序方式:所有节点关键字是按递增次序排列,并遵循左小右大原则;
(2)子节点数:非叶节点的子节点数>1,且<=M ,且M>=2,空树除外(注:M阶代表一个树节点最多有多少个查找路径,M=M路,当M=2则是2叉树,M=3则是3叉);
(3)关键字数:枝节点的关键字数量大于等于ceil(m/2)-1个且小于等于M-1个(注:ceil()是个朝正无穷方向取整的函数 如ceil(1.1)结果为2);
(4)所有叶子节点均在同一层、叶子节点除了包含了关键字和关键字记录的指针外也有指向其子节点的指针只不过其指针地址都为null对应下图最后一层节点的空格子;
备注:非叶节点是除了最下面没有分叉的节点如下图的AC-EF-HKL-NP-RS-WXYZ,关键字是节点上的值(和二叉树节点上的值类似)如下的字母就是
下面根据B树的形成过程,理解一下
定义一个5阶树(平衡5路查找树;),现在我们要把3、8、31、11、23、29、50、28依次插入 这些数字构建出一个5阶树出来;
规则:
(1)节点拆分规则:当前是要组成一个5路查找树,那么此时m=5,关键字数必须<=5-1(这里关键字数>4就要进行节点拆分);
(2)排序规则:满足节点本身比左边节点大,比右边节点小的排序规则;
先插入 3、8、31、11
再插入23、29
再插入50、28
这样大概就了解来B树是如何形成的了。
“b数”(B树)是个怎么回事相关推荐
- 森林结点数,边数与树个数的关系
森林结点数,边数与树个数的关系 @(算法学习) 若森林F有15条边,25个结点.则F中包含树的个数是: A. 8 B. 9 C. 10 D. 11 分析:森林中树的个数与结点数的关系推导. 先看一般性 ...
- 【bzoj4408】[Fjoi 2016]神秘数 主席树
题目描述 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13}, 1 = 1 2 = 1+1 3 = 1+1+1 4 = 4 5 = 4+1 6 = ...
- hdu4099(斐波那契数+字典树)
题意: 给出一个数字n,在斐波那契数列中找到一个最小下标,满足这个斐波那契数是以n为前缀,输出这个下标. 思路: 高精度+字典树+1000000000000000进制.后来知道在斐波那契数很大的时候, ...
- 【HDU - 5869】Different GCD Subarray Query(思维,数学,gcd,离线处理,查询区间不同数,树状数组 或 二分RMQ)
题干: This is a simple problem. The teacher gives Bob a list of problems about GCD (Greatest Common Di ...
- BZOJ44084299[Fjoi 2016]神秘数——主席树
题目描述 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13}, 1 = 1 2 = 1+1 3 = 1+1+1 4 = 4 5 = 4+1 6 = ...
- [FJOI 2016]bzoj 4408 神秘数 - 线段树
题目大意:给你一列数,多次询问用一个区间的数字形成一个可重集合,最小的不能被表示为其一个子集的数字是多少. 题解:考虑给你一个可重集合你怎么算:从小到大排序,假设用前x个数字不能表示的最小都数字是an ...
- bzoj 4408: [FJOI2016]神秘数 主席树
先看一下对于给定的一段如何暴力求最大值,首先将这一段排序,然后如果存在某一个数,这个数比它前面的数的前缀和至少大2,那么答案就是它前面那个数的前缀和+1. 那么假设现在处理了前面较小的一些数之后的答案 ...
- 数星星 ← 树状数组
[问题描述] 题目来源:1265. 数星星 - AcWing题库 天空中有一些星星,这些星星都在不同的位置,每个星星有个坐标. 如果一个星星的左下方(包含正左和正下)有 k 颗星星,就说这颗星星是 k ...
- 字典数(前缀树)的实现
[题目] 字典树又称为前缀树或者Trie树,是处理字符串常用的数据结构.假设组成所有单词的字符仅是'a'-'z',请实现字典树的结构,并包含以下四个主要的功能. void insert(String ...
最新文章
- jquery中如何以逗号分割字符串_百度知道
- Hystrix 熔断降级
- 规则引擎:大厂营销系统资格设计全解
- Subline Text默认设置文件Preferences.sublime-settings—Default详解
- 【自适应盲均衡4】基于RLS的多径衰落信道均衡算法(RLS-CMA)的理论推导与MATLAB仿真
- 被远程机器长时间无响应 (错误码:[308])_自动折叠式“Rollbot”为完全不受束缚的软机器人铺平了道路...
- 【操作系统】多线程与多任务的比较
- sql server 存储过程的详解
- 几何画板自定义工具_几何画板sketchpad下载-几何画板sketchpad免费版下载v5.0.6.5
- bp神经网络的算法步骤,BP神经网络算法流程图
- 卡尔曼滤波原理与应用
- 婚宴座位图html5,婚宴座位图模版欣赏【婚礼纪】
- Linux编辑grldr文件,使用syslinux完美引导GRLDR。
- mhl数据线_superMHL接口诞生:只需五个针脚 干掉HDMI
- 命令与征服:红色警戒3 解决游戏启动时界面黑屏,但右上角有五角星电脑卡死的问题——hosts
- 烧了2个HUB和1个光驱后 我选择了ORICO分控集线器
- 笔记本和linux台式共享网络,怎么把笔记本的网络共享给台式电脑
- openlayers结合谷歌api进行地图定位
- 二叉树基本知识点图文介绍(全网最简洁)
- 7-25 念数字(15 分)Java与C++
热门文章
- 乡村老师网络计算机培训日志,乡村年轻女教师 “教育日记”火爆网络
- Apollo二次规划的应用之PWJ
- ffmpeg播放器声音效果2-变速不变调及变调
- Java fx 变速播放音乐_变速变声播放器(Impulse Media Player)
- 计算机视觉产品推荐,个性化推荐:人工智能中的计算机视觉、NLP自然语言处理和个性化推荐系统哪个前景更好一些?...
- python skimage 填补图像孔洞
- XILINX FPGA OV5640 摄像头驱动(一)
- FBX骨骼模型导入UE4
- getopt.h和getopt(),getopt_long()等函数
- 纯css+html实现的分页器功能