n 阶 B 树中可以容纳多少个元素?

2024-03-11

是2n吗?只是检查。


术语
The Order文献中对 B 树的定义并不一致。
(例如参见维基百科有关 B 树的文章的术语部分 http://en.wikipedia.org/wiki/Btree#Terminology)
一些作者认为它是minimum数量keys一个非叶节点可能成立,而其他人则认为它是maximum数量子节点非叶节点可以保存(比该节点可以保存的最大键数多 1)。
然而许多其他人通过假设固定长度的键(和固定大小的节点)来回避歧义,这使得最小值和最大值相同,因此顺序的两个定义产生相差 1 的值(正如所说的键的数量是总是比孩子的数量少一。)

我定义depth作为在叶记录的搜索路径中找到的节点数,包括根节点和叶节点。从这个意义上说,一棵非常浅的树,只有一个直接指向叶节点的根节点,其深度为 2。如果该树要生长并需要中间级别的非叶节点,则其深度将为 3 等。

n 阶 B 树中可以容纳多少个元素?
假设固定长度的密钥,并假设“顺序”n 被定义为最大数量子节点, 答案是:

   (Average Number of elements that fit in one Leaf-node) * n ^ (depth - 1)

我怎么算?...:
数据(“元素”)仅保存在叶节点中。因此,持有的元素数量是一个节点中适合的平均元素数量乘以叶节点的数量。
叶节点的数量本身由适合非叶节点的子节点数量(顺序)驱动。例如,叶节点上方的非叶节点指向 n 个(顺序)叶节点。然后,该非叶节点之上的非叶节点指向n个相似节点等,因此“为(深度-1)次方”。

请注意,上面的公式通常使用平均值(非叶节点中保存的键和叶节点中保存的元素)而不是假设固定键长度和固定记录长度:树的节点大小通常为与键和记录大小相称,因此保存足够大的数字键或记录,使得任何叶子中保存的键或记录的有效数量与平均值相比变化相对较小。

Example:
一棵树depth 4(一个根节点,两层非叶节点和一层[显然]叶节点)和order 12(非叶节点最多可以容纳 11 个键,因此指向它们下面的 12 个节点),这样每个叶节点可以包含 5 个元素, would:
- 让它的根节点指向它下面的12个节点 - 它下面的每个节点都指向它们下面的 12 个节点(因此“3”层中将有 12 * 12 个节点(假设根是第 1 层等,顺便说一句,这个编号定义也是不明确的......) -“第 3 层”中的每个节点将指向 12 个叶节点(因此将有 12 * 12 * 12 个叶节点。
- 每个叶节点有 5 个元素(在本示例中)
因此..这样一棵树将容纳...

  Nb Of Elements in said tree = 5 * 12 * 12 * 12
                              = 5 * (12 ^ 3)
                              = 5 * (12 ^ depth -1)
                              = 8640

认识第三行的公式。

B 树的显着之处在于,相对较浅的树(根和查找记录之间的“跳跃”次数有限)可以保持相对较高的数字记录。这个数字是乘以按每个级别的顺序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

n 阶 B 树中可以容纳多少个元素? 的相关文章

  • mysql索引BTree和B+Tree分析

    BTree索引 初始化介绍 一颗b树 xff0c 浅蓝色的块我们称之为一个磁盘块 xff0c 可以看到每个磁盘块包含几个数据项 xff08 深蓝色所示 xff09 和指针 xff08 黄色所示 xff09 xff0c 如磁盘块1包含数据项1
  • h2database BTree 设计实现与查询优化思考

    h2database 是使用Java 编写的开源数据库 兼容ANSI SQL89 既实现了常规基于 BTree 的存储引擎 又支持日志结构存储引擎 功能非常丰富 死锁检测机制 事务特性 MVCC 运维工具等 数据库学习非常好的案例 本文理论
  • 九、索引与执行计划、索引的分类

    索引与执行计划 索引入门 生活中的索引 MySql 中的索引 谈下 B Tree 二分查找 二叉树 Binary Tree 平衡二叉树 AVL 树 平衡二叉树的遍历 平衡二叉树的旋转 B 树 B 树的定义 B 树的作用 B 树的插入操作 索
  • 红黑树与平衡二叉树区别?

    如果说平衡二叉树是一个类的话 那么红黑树就是该类的一个实例 算法的书我丢久了 一下子也找不到 我是凭记忆说的 红黑树的算法比较麻烦 但它的思想很好 如果理解了它的思想也就理解它的算法 我也只记得思想 具体算法记不得了 我就在这说说思想吧 红
  • 红黑树与平衡二叉树区别?

    如果说平衡二叉树是一个类的话 那么红黑树就是该类的一个实例 算法的书我丢久了 一下子也找不到 我是凭记忆说的 红黑树的算法比较麻烦 但它的思想很好 如果理解了它的思想也就理解它的算法 我也只记得思想 具体算法记不得了 我就在这说说思想吧 红
  • 简单理解B树和B+树

    前言 前面我们说了红黑树 他是一种特殊的搜索树 但是由于他只是二叉树 所以这就导致他在大量的数据面前深度过高 同时会造成大量的磁盘空间浪费 所以我们又研究出来了B树和B 树 B树 他是人们早期的一种设计 他打破了二叉树的方式 它可以有多个分
  • 『数据结构』B树(B-Tree)及其变体 B+树,B*树

    原文地址 1 背景 当有大量数据储存在磁盘时 如数据库的查找 插入 删除等操作的实现 如果要读取或者写入 磁盘的寻道 旋转时间很长 远大于在 内存中的读取 写入时间 平时用的二叉排序树搜索元素的时间复杂度虽然是 O log2n O l o
  • 红黑树

    1 红黑二叉树详解及理论分析 http blog csdn net kartorz article details 8865997 查找 一 史上最简单清晰的红黑树讲解 http blog csdn net yang yulei artic
  • C#中基于文件系统的B+树实现

    C 中是否有基于文件系统的 B 树实现 开源 我找到了一些项目 但这些项目不是基于文件 磁盘 的实现 我专门寻找基于文件系统的 B 树 Update 我添加了一些托管 B 树实施的基准如果您研究这类事情 请供您享受 BplusDotNet
  • 是否有任何 std::set 实现不使用红黑树?

    有没有人见过 STL 的实现 其中 stl set 是not作为红黑树实现 我问的原因是 在我的实验中 B 树的表现优于std set 以及其他红黑树实现 的系数为 2 到 4 具体取决于 B 的值 我很好奇 当似乎有更快的数据结构可用时
  • 如何从 b 树中删除元素?

    我正在尝试了解 b 树 我能找到的每个来源似乎都忽略了有关如何从树中删除元素同时保留 b 树属性的讨论 有人可以解释该算法或向我指出可以解释其工作原理的资源吗 维基百科页面上有对此的解释 B 树 删除 http en wikipedia o
  • javascript二叉搜索树实现[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人知道用 Javascript 实现简单 BTree 的任何好例子吗 我有一堆随机到达的 东西 并且
  • 增量列是否会使该列上的 B 树索引不平衡?

    我一直在思考两个问题 在互联网上找不到任何关于此的资源 dbms 是如何处理的 或者他们呢 尤其是甲骨文 在提问之前 这里有一个例子 假设我有一个主表 MASTER 和从表 SLAVE 主表有一个 ID 列 它是主键 索引由Oracle创建
  • 分裂b+树中的节点

    我试图弄清楚当节点溢出时到底会发生什么 信息 在我的 b 树中 每个块有 4 个指针和 3 个数据部分 问题 我明白 当出现溢出时 我们会分成 2 个节点 每个节点有 2 个节点 键 并将中间值插入父节点 而不从子节点中删除 与 b 树不同
  • B 树与二叉树

    如果我使用 b 树实现内存 RAM 搜索操作 那么与二叉树相比 它在缓存或其他一些效果方面会更好吗 我所知道的是 binary search tress O log n btrees O c log n 各种博客上对此进行了很多讨论 Alg
  • 非聚集索引在 SQL Server 中的工作原理

    我有一个与数据库理论相关的问题 假设我们有一个包含 3 列的表 PersonID PersonName PersonAge 我们知道 当我们有一个一列的非聚集索引时 SQL Server会按照指定的列对表数据进行排序 并从中构建B 树 当我
  • 桶的索引计数

    所以 这是我的小问题 Let s say I have a list of buckets a0 an which respectively contain L lt c0 cn lt H items I can decide of the
  • n 阶 B 树中可以容纳多少个元素?

    是2n吗 只是检查 术语 The Order文献中对 B 树的定义并不一致 例如参见维基百科有关 B 树的文章的术语部分 http en wikipedia org wiki Btree Terminology 一些作者认为它是minimu
  • B 树和 2-3-4 树之间的区别

    B 树和 2 3 4 树有什么区别 另外 你如何找到每个的最大和最小高度 链接到维基百科 http en wikipedia org wiki 2 3 4 tree and引用 2 3 4 树是 4 阶 B 树 A 2 3 4 is a B
  • C/C++:如何将数据存储在B树中的文件中

    在我看来 将数据作为文件存储在 B 树中的一种方法可以使用 C 语言使用具有结构序列 数组 的二进制文件来有效完成 每个结构代表一个节点 因此 我们可以使用类似于使用数组创建链表的方法来连接各个节点 但随之而来的问题是删除节点 因为在一个大

随机推荐

  • 如何删除c中每行后面的最后一个空格?

    我必须打印出帕斯卡三角形 我的输出如下 1 1 1 1 2 1 我的代码给出了正确的输出 但在每行后面打印了一个额外的空格 有人可以告诉我如何摆脱它吗 这是我的代码 pascal include
  • 将 Spotify URI 编码为 Spotify 代码

    Spotify 代码 https www spotifycodes com index html 是一些小条形码 可让您共享歌曲 艺术家 用户 播放列表等 它们在 条 的不同高度中编码信息 23 个条可以有 8 个离散高度 这意味着 8 2
  • 在 linux / OS X 上启动 mongod 服务的正确方法是什么?

    我已经安装了 mongodb 并且能够运行它 使用它 执行简单的数据库读 写类型的操作 现在我正在尝试设置我的 Mac 以将 mongod 作为服务运行 我收到 未找到命令 的响应 init mongod start 回应 service
  • 在 pl/sql 中计算游标的行数

    我正在尝试计算将从 sql 语句返回的行数 该语句位于游标中 我的代码是这样的 DECLARE v counter int 0 select count into v counter from cursor get sth is selec
  • Airflow:ValueError:无法配置处理程序“处理器” - wasb 记录器

    我正在尝试使用 Azure blob 配置远程日志记录 Airflow version 1 10 2 Python 3 6 5 Ubuntu 18 04 以下是我所做的步骤 在 AIRFLOW HOME config log config
  • 从嵌套列表中提取数据框

    我有一个嵌套的列表列表 其中包含一些数据框 但是 数据框可以出现在列表中的任何级别 我想要最终得到的是一个平面列表 即只有一个级别 其中每个元素都是only数据帧 所有其他东西都被丢弃 我已经为此提出了一个解决方案 但它看起来非常笨重 我确
  • 滚动时 jQuery 下拉菜单位置

    我是 jQuery 新手 正在学习 jQuery 概念 目前 我正在尝试设计一个包含长列表项的自定义下拉菜单 我想在将鼠标悬停在主菜单上时滚动菜单 我正在尝试使用描述的 jquery 滚动菜单自定义 CSShere http css tri
  • 必须声明表变量@table

    我是 C 和 SQL 的初学者 我有一个想要执行的 SQL 插入语句 它要求提供我想要插入的其他变量中的表名称 但是当我运行这个控制台应用程序时 我收到此错误 必须声明表变量 table 这是代码的一部分 StreamReader my r
  • 在网络浏览器中连接到以太坊节点

    我收到此错误 CONNECTION ERROR Couldn t connect to node http localhost 8545 is it running 我目前正在尝试将 Meteor 应用程序与私有测试网络上的节点一起使用 我
  • 在 bash 中重命名文件的陷阱

    我正在这里阅读指南http mywiki wooledge org BashFAQ 030 http mywiki wooledge org BashFAQ 030在这个链接上给出了一些例子我试图理解它们一个示例代码说 Bash Repla
  • git aws.push:没有名为 boto 的模块

    我正在尝试按照教程进行操作 在 AWS Elastic Beanstalk 上部署 Django http docs aws amazon com elasticbeanstalk latest dg create deploy Pytho
  • Pandas:修改特定级别的多索引

    我有一个带有多重索引的数据框 想修改多重索引的一个特定级别 例如 第一级可能是字符串 我可能想从该索引级中删除空格 df index levels 1 x replace for x in df index levels 1 然而 上面的代
  • FastAPI 的部分更新

    我想在 FastAPI 中实现支持部分更新的 put 或 patch 请求 官方文档 https fastapi tiangolo com tutorial body updates 真的很混乱 我不知道如何执行该请求 我不知道items位
  • 从 C# 中的 WebClient 读取响应标头

    我正在尝试创建我的第一个 Windows 客户端 这是我第一次发布她的文章 它将与 Web 服务 进行通信 但是我在读取返回的响应标头时遇到了一些麻烦 在我的响应字符串中 我收到了一个不错的 JSON 文档 这是我的下一个问题 但我无法 查
  • 我们如何在android中以编程方式隐藏抽屉/启动器/应用程序管理器中的图标

    任何人都可以帮我解决 我们如何通过任何其他实用应用程序在手机上随处隐藏或取消隐藏应用程序图标 尝试这个 PackageManager p getPackageManager p setComponentEnabledSetting getC
  • 返回表中列名的 Select 语句是什么

    是否有任何 select 语句可以返回表中的列列表 INFORMATION SCHEMA COLUMNS 视图将提供特定表名的列名 SELECT Column Name FROM INFORMATION SCHEMA COLUMNS WHE
  • Android:在应用程序中间时从 3G 切换到 WIFI = 网络连接丢失

    我在使用 HTC Legend Android 2 2 时遇到了一个恼人的问题 在 Xperia Galaxy Nexus 等上没有看到此问题 当我在 3G 连接上启动应用程序 获取一些数据 然后进入手机设置并启用 WIFI 时 手机会自动
  • 网络音频 API 均衡器

    我一直在寻找使用 Web 音频 API 创建音频均衡器的方法 http webaudio github io web audio api http webaudio github io web audio api 我发现了很多关于创建可视化
  • 使用 StAXResult 调用 Transformer 时省略 XML 声明

    我想将多个 XML 节点从源 XML 文件复制到目标文件 源文件和目标文件都非常大 所以我将使用 StAX 通常 我尝试处理的文件如下所示
  • n 阶 B 树中可以容纳多少个元素?

    是2n吗 只是检查 术语 The Order文献中对 B 树的定义并不一致 例如参见维基百科有关 B 树的文章的术语部分 http en wikipedia org wiki Btree Terminology 一些作者认为它是minimu