数据结构和算法-B树(B树的查找 B树的最大高度和最小高度)

文章目录

  • 回顾:二叉查找树
  • 五叉查找树
    • 如何查找
      • 查找成功
      • 查找失败
      • 如何保证查找效率
  • B树
  • B树的高度
  • 小结

回顾:二叉查找树

在这里插入图片描述

五叉查找树

进一步对范围划分,处于不同划分进入不同子树
四个数做划分,此时有五个区间
此时一个节点对应多个关键字,如果叶子节点依然没有对应的关键字,那么即查找失败,然后看看在叶子节点的关键字的哪个区间
此时每个节点可以只有一个关键字,也可以有多个关键字,其对应的子树个数自然也就不同
在这里插入图片描述

如何查找

查找成功

9小于22,进入左子树,到左子树的根节点,此时比对关键字,可以顺序找,也可以折半找,此时没找到,但范围区间找到了,此时跳到三个子树的第二个子树上,再次顺序查找,发现找到对应的关键字,查找成功
在这里插入图片描述

查找失败

41大于22,首先到右子树去,比对关键字,在对应的第二个子树,进入该子树,再次比对关键字,此时进入对应的第二子树,但此时为空,所以没找到

在这里插入图片描述

如何保证查找效率

保证树越矮越好,那么比对次数也就更少
子树个数=关键字个数+1
在这里插入图片描述
子树高度都相同
在这里插入图片描述

B树

节点多路,然后各个节点的子树的高度都是平衡的,所以称为多路平衡查找树。
m阶B树可为空。此时没有节点
每个节点最多为m颗子树,最多m-1颗关键字
最少的话除根节点的子树最少可以为0,其次是2,如果为1,那么由于此时根节点的关键字含一个树,此时有两个分支,那么其中一个有高度,另一个没有高度,不符合B树的要求
其他节点最少为m/2向上取整。
在这里插入图片描述

此时叶节点都是空结点,终端节点不是空节点
非叶节点的结构即当关键字按从小到大排序时,比较关键字时若发现第一个Pi大于所寻找的关键字,那么此时对应的子树根节点为Ki

在这里插入图片描述
下面是简单概括
在这里插入图片描述

B树的高度

最小高度此时尽可能满,即从根节点开始,都有m个子树,此时每个节点有m-1个关键字。
每行的节点数目是m的次方,每个节点又有m-1个关键字,关键字总树为n
此时n对应上限的是满的m叉树,可以求h的最小值

在这里插入图片描述

此时最大高度对应的是分叉最少,此时最少根节点两个分叉,其他节点都是m/2向上取整个分叉

此时利用的是叶子节点的关系
为啥n个关键字的B树必有n+1个叶子节点,是因为此时可以想象一下B树的本质就是分区间,最后对应的区间全部都是落在叶子节点中的,所以说n个关键字的B树,必须有n+1个叶子节点

但此时高度最高的B树对应的叶子节点个数的下限其实为 如图中的第h+1层共有叶子节点……个,因为终端节点的关键字个数可以无限制增加的,
此时假设此时h为最高的B树的高度,那么此时高度最高的B树的除终端节点的节点的关键字数目必须为最小节点关键字总数,终端节点的关键字数目可以大于等于节点最小关键字总数。

所以高度为h的最高的B树,此时的叶子节点树最小就是图中等比得来的,最大得小于终端节点的关键字总数可以多到为此时等比得来得叶子节点的关键字的数模加上终端节点关键字数目,若等于,此时高度还可以增加了

所以此时关键字数目为n的对应的最高的高度为h的B树的叶子节点的关键字的数目一定是大于最高的高度为h的B树的叶子节点的最少数目(等比得来的)
在这里插入图片描述此时利用的是如果关键字总数小于当每个节点的关键字都是最少时构成的树的关键字总数的话,那么此时高度一定小于h,因为此时若依然为h,那么此时由于任何一个节点都不能有更少的关键字,所以失败。所以如果此时最大高度为h时,那么此时关键字总数一定大于高度为h当每个节点的关键字都是最少时构成的树的关键字总数
在这里插入图片描述

在这里插入图片描述

小结

B:balance。即左右子树平衡,高度一样嘛
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/305129.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[RoarCTF2019] TankGame

不多说,用dnspy反编译data文件夹中的Assembly-CSharp文件 使用分析器分析一下可疑的FlagText 发现其在WinGame中被调用,跟进WinGame函数 public static void WinGame(){if (!MapManager.winGame && (MapManager.nDestroyNum 4 || MapManager.n…

基于javaWeb的图书馆管理系统

概述 基于Spring Spring MVC MyBatis的图书馆管理系统,使用Maven进行包管理。主要功能包括:图书查询、图书管理、图书编辑、读者管理、图书的借阅与归还以及借还日志记录等。 环境配置 开发环境:IDEA ,mysql5.7,m…

leaflet学习笔记-初始化vue项目(一)

leaflet简介 Leaflet是一款开源的轻量级交互式地图可视化JavaScript库,能够满足大多数开发者的地图可视化需求,其最早的版本大小仅仅38 KB。Leaflet能够在主流的计算机或移动设备上高效运行,其功能可通过插件进行扩展,拥有易于使用…

2023年房产赛道短视频平台营销观察

我国房地产经历20年的高速发展时期,地产相关从业人员依靠传统带看售楼处就能有相当规模的人流量,热门项目开盘可日销百套。 疫情三年,购房者的信息获取的习惯从线下踩盘变成线上观看短视频/直播,房企也越来越重视线上销售、抖音直…

C++ 一个有bug的贪吃蛇。。。。。。。。

C 一个有bug的贪吃蛇。。。。。。。。 #include <graphics.h> #include<Windows.h> #include<Mmsystem.h> #include<conio.h> #include<time.h> #include<stdio.h> #include<easyx.h> using namespace std; #pragma warning(di…

【AI】计算机视觉VIT文章(Transformer)源码解析

论文&#xff1a;Dosovitskiy A, Beyer L, Kolesnikov A, et al. An image is worth 16x16 words: Transformers for image recognition at scale[J]. arXiv preprint arXiv:2010.11929, 2020 源码的Pytorch版&#xff1a;https://github.com/lucidrains/vit-pytorch 0.前言 …

Tinker 环境下数据表的用法

如果我们要自己手动创建一个模型文件&#xff0c;最简单的方式是通过 make:model 来创建。 php artisan make:model Article 删除模型文件 rm app/Models/Article.php 创建模型的同时顺便创建数据库迁移 php artisan make:model Article -m Eloquent 表命名约定 在该文件中&am…

WPF Button使用漂亮 控件模板ControlTemplate 按钮使用控制模板实例及源代码 设计一个具有圆角边框、鼠标悬停时颜色变化的按钮模板

续前两篇模板文章 模板介绍1 模板介绍2 WPF中的Button控件默认样式简洁&#xff0c;但可以通过设置模板来实现更丰富的视觉效果和交互体验。按钮模板主要包括背景、边框、内容&#xff08;通常为文本或图像&#xff09;等元素。通过自定义模板&#xff0c;我们可以改…

test perf-03-性能测试之 Gatling 使用入门官方教程

quick start 快速入门 学习 Gatling 的概念&#xff0c;使用录制器创建可运行的 Gatling 仿真。 介绍 在这一部分&#xff0c;我们将使用 Gatling 进行负载测试一个简单的云托管的 Web 服务器&#xff0c;并向您介绍 DSL&#xff08;领域特定语言&#xff09;的基本要素。 …

Flink1.17实战教程(第五篇:状态管理)

系列文章目录 Flink1.17实战教程&#xff08;第一篇&#xff1a;概念、部署、架构&#xff09; Flink1.17实战教程&#xff08;第二篇&#xff1a;DataStream API&#xff09; Flink1.17实战教程&#xff08;第三篇&#xff1a;时间和窗口&#xff09; Flink1.17实战教程&…

[Redis实战]优惠券秒杀

三、优惠券秒杀 3.1 全局唯一ID 每个店铺都可以发布优惠券&#xff1a; 当用户抢购时&#xff0c;就会生成订单并保存到tb_voucher_order这种表中&#xff0c;而订单表如果使用数据库自增ID就存在一些问题&#xff1a; id的规律性太明显受单表数据量的限制 场景分析一&…

【网络安全 | 扫描器】御剑安装及使用教程详析

御剑是一款传统的Web网络安全综合检测程序&#xff0c;支持对PHP、JSP、ASPX等文件进行扫描&#xff0c;具备全扫描、网络安全扫描和主机安全扫描能力&#xff0c;方便发现网站漏洞。 文章目录 下载使用教程 本文对御剑的安装及使用教程进行详析 下载 下载地址读者可自行上网…