Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >推导B树的最大高度和最小高度得出B树的高度范围

推导B树的最大高度和最小高度得出B树的高度范围

作者头像
lexingsen
发布于 2022-02-24 11:26:07
发布于 2022-02-24 11:26:07
3.3K00
代码可运行
举报
文章被收录于专栏:乐行僧的博客乐行僧的博客
运行总次数:0
代码可运行

前提条件:n>=1,则对于任意一棵包含n个关键字、高度为h、阶数为m的B树。

一、最小高度:

对于任意树类型的数据结构,如果其每层节点能够分布的足够满,其高度也会随之变得足够的低。基于这个思路,对于B树无外乎也是一种树,B树的关键字数以及儿子节点个数满足这样的条件(ceil代表向上取整):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//根节点   
儿子节点个数[2, m]
关键字个数[1, m-1]

//非根节点
儿子节点个数[ceil(m/2), m]
关键字个数[ceil(m/2)-1, m-1]

为了使得B树高度最低,也就是每层的节点数达到最大,看如下的计算过程:

二、最大高度:

要使得B树的高度达到最大,也就意味着在每个节点中,关键字的个数达到最小,这样在容纳相同个数的关键字的B树中,其高度可以达到最大。

有了上边我们对最小关键字大小把控,下面来推到B树的最大高度:

总结:

由一和二可知,通过寻找B树的两种极限的存在,推出B树的高度范围为:logm(n+1)<= h <=log(ceil(m/2)) (n+1)/2 + 1

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
图解:什么是B-树、B+树、B*树
6.非叶子结点的关键字:K[1], K[2], …, K[M-1];且K[i] < K[i+1];
你好戴先生
2020/09/03
10.8K2
DS高阶:B树系列
        若接近有序的数据插入到BS中,会导致退化成单支树,时间复杂度退化为O(N)
小陈在拼命
2024/05/26
1060
DS高阶:B树系列
【高阶数据结构】B-树详解
以上结构适合用于数据量相对不是很大,能够一次性存放在内存中,进行数据查找的场景(内查找)。
YIN_尹
2024/02/08
8290
【高阶数据结构】B-树详解
MySQL索引底层:B+树详解
当我们发现SQL执行很慢的时候,自然而然想到的就是加索引。对于范围查询,索引的底层结构就是B+树。今天我们一起来学习一下B+树哈~
捡田螺的小男孩
2021/03/15
7770
文心一言 VS 讯飞星火 VS chatgpt (251)-- 算法导论18.2 4题
B树(B-tree)是一种自平衡的树,常用于数据库和文件系统的索引结构。在B树中,每个节点最多有 m 个子节点(对于B树,m 是阶数,即节点的最大子节点数),并且每个非根节点至少有 ⌈m/2⌉ 个子节点(其中 ⌈x⌉ 表示不小于 x 的最小整数)。
福大大架构师每日一题
2024/05/18
1000
文心一言 VS 讯飞星火 VS chatgpt (251)-- 算法导论18.2 4题
文心一言 VS 讯飞星火 VS chatgpt (167)-- 算法导论13.1 7题
每个节点或是红色,或是黑色。根节点是黑色。每个叶节点(NIL或空节点)是黑色。如果一个节点是红色的,则它的两个子节点都是黑色。从任一节点到其每个叶节点的所有路径都包含相同数目的黑色节点。要使红黑树中红色内部结点与黑色内部结点的比值最大,我们需要考虑以下策略:
福大大架构师每日一题
2023/12/29
1580
文心一言 VS 讯飞星火 VS chatgpt (167)-- 算法导论13.1 7题
算法数据结构(一)-B树
介绍 B树的目的为了硬盘快速读取数据(降低IO操作次树)而设计的一种平衡的多路查找树。目前大多数据库及文件索引,都是使用B树或变形来存储实现。 目录 为什么B树效率高 B树存储 B树缺点 为什么B树效
蘑菇先生
2018/05/21
8340
算法和数据结构: 十 平衡查找树之B树
前面讲解了平衡查找树中的2-3树以及其实现红黑树。2-3树种,一个节点最多有2个key,而红黑树则使用染色的方式来标识这两个key。
yaphetsfang
2020/07/30
4120
算法和数据结构: 十 平衡查找树之B树
从B 树、B+ 树、B* 树谈到R 树
说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。
bear_fish
2018/09/14
2.3K0
从B 树、B+ 树、B* 树谈到R 树
数据结构 —— B树和B+树
​ 最近在学习数据库相关的知识,了解到数据库很多是采用B-/+树作为索引,例如Mysql的InnoDB引擎使用的B+树、MongoDB默认采用B树作为索引。
俺也想起舞
2021/12/24
6.6K0
数据结构 —— B树和B+树
MySQL数据库索引选择为什么使用B+树而不是跳表?
在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择使用B+树!
小冷coding
2023/05/24
7750
MySQL数据库索引选择为什么使用B+树而不是跳表?
6.3.2 B+树基本概念
2)非叶根(不是叶子的根结点)结点至少有两棵子树,其他每个分支结点至少有【m/2】(向下取整)棵子树。(B树是要求至少2棵子树)
week
2018/08/24
4440
数据结构 之 树总结
   特点:二叉树每个节点最多只有两个子节点, 分为左右子树, 且左子树 < 节点 < 右子树。
菜的黑人牙膏
2019/01/21
5520
数据库底层数据结构 B树B+树LSM树 详解对比与总结
我们熟知常用数据库MySQL MongoDB HBase等底层存储都用了各种树结构,如B树LSM树,不过为什么要用这些结构呢?
大鹅
2021/06/16
5.4K0
python算法与数据结构-数据结构中常用树的介绍(45)
树是一种非线性的数据结构,是由n(n >=0)个结点组成的有限集合。 如果n==0,树为空树。 如果n>0, 树有一个特定的结点,根结点 根结点只有直接后继,没有直接前驱。 除根结点以外的其他结点划分为m(m>=0)个互不相交的有限集合,T0,T1,T2,...,Tm-1,每个结合是一棵树,称为根结点的子树。
Se7eN_HOU
2019/07/08
8310
你好,我是B树
b)x.key:为节点中存储的关键字。x.key1、x.key2 ... x.keyx.n 以非降序顺序排列,满足 x.key1 <= x.key2 ... <= x.keyx.n。
WindWant
2021/07/23
3390
常用的算法和数据结构 面试_数据结构与算法面试题80道
定义:最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。
全栈程序员站长
2022/09/23
7820
常用的算法和数据结构 面试_数据结构与算法面试题80道
数据库索引(结合B-树和B+树)
数据库索引,是数据库管理系统中一个排序的数据结构以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种
Mister24
2018/05/14
9430
万字长文彻底搞懂二叉树
一棵树由称作跟的节点r以及0个或多个非空的树T1,T2, ...Tk组成,这些子树中每一颗的根都被来至根r的一条有向的边所连接。
码老思
2023/10/19
7700
万字长文彻底搞懂二叉树
【MySQL一】开发人心里都该有的那颗 B 树
对该二叉树的节点进行查找发现深度为1的节点的查找次数为1,深度为2的查找次数为2,深度为n的节点的查找次数为n,因此其平均查找次数为(1+2+2+3+3+3) / 6 = 2.3次
周三不加班
2019/09/03
6420
【MySQL一】开发人心里都该有的那颗 B 树
相关推荐
图解:什么是B-树、B+树、B*树
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验