咸鱼学长的ppt特别好看书不理解的地方都讲的很清晰很清晰 b站视频的学长讲的也特别好讲稿是b站视频学长的讲稿机翻的特别特别棒啊( ૢ⁼̴̤̆ ꇴ ⁼̴̤̆ ૢ)~ෆ=͟͟͞͞( 'ヮ' 三 'ヮ' =͟͟͞͞)
同学大家好,我们来学习本章的第1个难点就是碧树那么蜜薯,他其实是一种数据结构,我们设计出这种数据结构,就是为了提高我们的效率的,提高我们在磁盘上的效率,那么什么是闭术的了解别墅之前我们先看一下第4章,学习过的一种特殊杀树,就是评论数。台上的查找效率,那么是不是必输呢?了解必输之前先来回忆一下第4章学习过的一种特殊双杀数,就是平方差数平方差数的定义,第一是任意节点的左子数高度之差的绝对值均不超过一,这样特殊大赛数,我们称之为平衡二差数,因为我们用了平方差数这样一种特殊的2差数,所以我们在平方差数上的查找不会退化为一种线性结构,也就是不会转化为在线性结构上的扩张,所以它的差额效率会比小的高,那么我们根据平衡上说的特点做出了一些改进,就设计出了b数,在平壤树当中每个节点只有一个关键字的一个数据元素,那么在b数中,每个节点可以有多个数据元素,可以有多个关键字,好,我们简单的了解了一下,会不会无关的比例?多个关键字好,我们简单的了解了一下,什么是碧树,接下来我们就来看一下树种眼科的定义,书中是这样定义b疏导,又称为多路平衡查找数例数中所有节点孩子节点数的最大值称为粒数的积,这里需要给大家强调的是,一定要记作为孩子节点数的最大值,所以有的时候我们会记错,会把它记错为关键字数量的组成大致,所以这次就不一定是四五点到好,除了这一个特点之后,我们再来看一下b数还有哪一些要求一颗m加b数或为空数或为满足如下特性的25%,那么其实对b数的要求非常多,没关系,我们先来总览一下,然后再逐条的历史当中看下他要求首先第一条蛇每个节点制度。哪些要求首先第1条是数中每个节点至多有m和子数及至多含有m减一个关键字,大家发现了这里关键字也是我们所说的数据元素的数量,是不是字数的数量数量分之的数量也一样有这样的要求,接下来若根节点不是终端节点,也就是说我开闭术当中不仅仅只有一个终端节点的话,则他至少有两个字数根节点至少有两个字数,也就是至少有一个关键字呗,我们根据性质一指导,那么第3条则是啊除根节点外的所有非叶节点,至少有m÷2取上节课指数这个数量求大至少有上节课只要他至少有一个。此处数量是有要求的,它至少有m÷2去上节课子数,那么接下来我们根据性质一则它至少有m÷2取上键减一个关键字,这是我们根据性质一得到的,然后这就是笔数的前三条要求,那么要求到这,同学们一定会有疑问,在每一个节点上我们都会有多关键字,也会有指向多颗子数根节点的指针,那么这些指针以及关键是如何进行放置的呢?接下来我们就来看一下非叶节点的结构,这就是艺术当中非叶节点的结构,我们来看一下,他其实存放在一个数组当中,这里数组的第1个只是放的是节点关键4等个数n,那么这个n它有范围是不是啊?因为我们对每个节点它是关键词是有要求的,它一定是小于等于m-1为什么关键是。关键词是有要求的,它一定是小于等于m-1,为什么小于等于m-1啊?因为它是m阶的b数,如果它的关键字大于m-1的话,它就不再是一个m阶的底数了,其次呢,它还要大于等于m÷2取上件减1,因为我们在要求三上对关键字的数量有这样一个最小值的要求好,这就是第1个指n它存放的是关键字的个数,接下来我们就来放置指向指数根线的指针以及关键字了,我们是这样放置的,首先我们放置了一个p0,它是指向第1个指数根据点的指针,然后方式第2个只是一个关键字,k1其次我们又放出了一个指向指数,那今年指针p,然后我们放出了关键字p2这样的交错一侧放置,最后一个放射的是指向一个指数根线的指针pa是像一个指数根线线指针pa,除了有这样放置的要求之外,还有哪些要求呢?那么还有这样的要求,对于关键字来讲,每一个关键字它是递增进行放置的,也就是k1要小于k,2小于k3一直小于kn,那么对指针有哪些要求呢?如果pa为指数根节点的指针,那么ph减1,这一个指针所指的这一个字数的关键字均要小于关键字 kI,那么pn所指指出的所有关键词啊,均要大于km,我们有这样的要求,也就是p0所指跟节点上子数的所有关键词的值,它都要小于kn,那么p所指向根结点所代表的这个字数上所有关键字的值,所以要大于k1,那么对于所有的关键字以及所有子数上的关键字的值这是要求四最后一个要求就是。所有子数上的关键词的值都有这样的要求,这是要求,4接下来最后一个要求就是所有的业绩点都出现在同一层次上,并不带任何信息,也就是所有一节点一定都在图一层,它一定是一颗平衡数,它的平衡因子啊,都为0好,这就是b数的所有的要求,我们先简单的从那了一下,接下来我们就来看一个例子来看一下,在例子当中它是如何满足这样的要求的,然后这就是一个三节必输的例子,我们来看一下它如何满足各个要求的,首先我们先来回忆一下。
噢,这个是第1个是考点。构造不就可以了,好,这就是第1个小考点好,我了解了第1个小问题之后,我们来看有关b数的操作,那么b数最重要的操作一定是查找操作在b数上是如何实现,查走了呢,我们设计了这样一种特殊的数据结构,如何实现查找,那么其实它的方式非常简单,首先我们只要找到对应着关键字的哪一个节点,然后在节点上一次的找循环验测是不是就可以了?我们来找一个例子试一下,例如查找32这样一个关键字,那么我们首先要在这一棵树上找到对应4的节点,我们通过跟几点出发对应上比较那么32,他是不是要比18要大呀?比33项小,所以他已经在这样一个中间的这个指数当中,然后我们继续找到三十二十六册的。秘书长查找,那么我们来总结一下,在b书上查找是不是分为两步在b数中找到对应存放概括性思考的节点,然后在节点中就需要我们查询关键词的操作,那么我们在b上所有的操作是不是就是多录的一个查找我们在节点上的一个操作,因为它是有序的,所以我们可以对它进行我们之前讲述过的查找方式,无论是顺序查找还是对应着什么外查找都是可以的,那么其实我们在具体实现上在b数上的这样一个步骤查找,它是对应着在私伴上的一个查找,而在每个节点上查找,其实我们是把节点上时要回到内存当中,在内存上进行的查找,大家注意一下,好了解了,查找之后,我们来看艺术的写的操作,就是插入操作,对于蜜薯这样要求比较多的一种数据结构来讲,无论是插入还是删除他的要求都会比较的麻烦之后可能会。赵进行的查找,大家要注意一下,好要求的查找之后,我们来看艺术的选择操作,就是插入操作,对于蜜薯这样要求比较多的一种数据结构来讲,无论是插入还是删除他的要求都会比较的麻烦,那么因为我们在插入或者删除之后,可能会破坏我们原先对b数的要求,所以还要对b数进行修改,其实它的过程与我们之前学习过的平行函数一些类似,但是比他更加麻烦一点,没关系,我们来一个一个的学习好,首先我们来看财务操作,那么插入操作我们就分为两步,第1步是定位,也就是我们定位到所插入的哪个节点,然后我们就是在节点当中的插入操作了,找到对应的位置对它进行插入,我们来看定位就是查找插入该关键字的位置及最底层中非硬了一定是菜最底层的那个。及最底层中每个非叶的节点,这里我们规定了一定是插入在最底层的那个某个非叶子节点内的这里,我们是一个规定,大家要注意一下,然后就是对他进行插入,首先呢,如果插入后不会破坏m机压刹车的定义,即插入后节点关键字的个数,在我们要求的整个区间之内则直接进行插入,不需要对它进行调整,我们来看一个例子,n减n这是一个三界指数的意思,如果我们想插入一个关键字13的话,应该如何插入呢?1就是先定位也就是第1步定位的过程定位到哪一个最后一层非叶子节点上,我们来看一下,首先从根基点出发,13要比18要小,所以13已经在18的左边这棵树上,然后13秒比12要大。那么接下来我们就来看一下,如果我们插入之后破坏了mgb数的定义,也就是插入之后,关键的数量有大于m-一时,则对插入后的节点进行分类操作,那么这样一个分类操作就是我们所说的调整操作,我们要把它调整回一个m,接到b数如何进行分类如何进行调整呢?我们来看一下它分为这样三步,第1步是插入后的节点,中间位置也就是我们这样求得的m÷2,取上接到这个位置的关键字,并入到负节点当中,这是第1步,然后第2步是中间节点左侧的哪些节点留在原先的节点当中,而右侧的节点放入到新的节点当中那么厚是不是并入了超出了一个后。会超出m减1这样一个范围啊,所以利用复习点后复习点关键字,如果超出范围的话,则要继续向上分裂,直到符合要求为止,那么如果我们分别到了跟节点,如果根基点一就超出范围,我们是不是还要像上分量,这是艺术的高度是不是就嘉羿了,那么这就是分裂操作,接下来我们就来看一个分裂的例子,那么这时我们插入到是19这个关键字,依旧寻找它的插入节点的位置,从k线出发19要比18要大,所以我们插入的是中间这个指数当中依旧看一下它的根基点的关键字,19它在23的左边比23要小,所以要插入到23左边的整个指数当中。
之后我们下来看身处操作那么深受,我们此时要分为两种情况进行讨论,把所有的端点所有的节点分为这样两种情况,一种是所有的最底层的扉页的节点成为终端节点,那么除了这些终端节点和粒子节点之外,剩下的所有节点称为非终端节点,那么首先我们来看一下对终端节点的实现出操作,它分为这样几种情况,第1种情况就是最简单的一种就是直接删除我们删除过后的这样一颗新的b数,依旧符合我们对原先MCb数的定义,就是若被删除关键字所在极点关键字个数要大于m÷2取上限减1,表明删除后仍慢阻b数定义直接删除三十一我们对他直接删除就可以了。噢,我们对它直接删除就可以了,删除过后先得到了这个它的b数是不是没有破坏三界必输的定义啊?那么这就是第1种情况好,第1种情况就是不破坏乳腺病数的定义,我们可以直接删除,那么第2种方式就是兄弟构建它,就是在我们破坏了原先必述的这样一个定义之后,应该采用的一种方法,兄弟构建的这样一种方法,什么意思呢?就是若被深入关键词所在,关键字总数等于m÷2,取上的简易也就是最少的那种情况,此时如果我们再删除是不是就破坏了它对 b数的要求了,所以且与此节点邻近的兄弟几点的关键词个数由大于等于m÷2取上限,这一个值又是什么意思呢?就是说我们这一个节点左右借一个。节点有任意一个兄弟节点,我们从中借一个关键词过来,那么借关键词之后的这一个生命节点,依旧符合我们原先对于这样一个mgb数的要求,则需要从兄弟节点借一个关键词,此过程需要调整的节点双新节点和熊结点的关键字,那么接下来我们就来个例子来看一下他如何核检的以及如何调整的,首先我还是删除一个关键字,24申诉之后我们发现等等。
和兄弟不够见到就是第3种的操作方法,兄弟不够计时,我们应该采用的方法,若被上述关键字你就满足这样的要求,也就是说删除之后它会不符合mgb数的定义,且与节点相邻的兄弟节点也不可以借,也没有多的,关键是给我们借过来怎么删除关键字,并与一个不过去的兄弟节点和双节点中两兄弟子数中间的关键字进行合并,合并后有双节点应减少一个节点,导致不符合定义则继续执行23步骤,直到我们满足mcb数定义为止,什么意思啊?我们来看一个例子,我们此生删除婚姻。
介绍了所有有关在终端节点上进行删除之后的方法,那么现在我们来介绍对于那些非专业节点是如何进行删除操作的,其实它也分为这样三种情况,我们一个来看首先这种情况就是弱小于此术当中关键字个数要大于这样一个数,所以找出钱去这个我们要理解一下什么是黑的前驱直,其实它与我们队要平安树当中的潜意识的概念是一样的,一个是所有树丛有大型的排列之后,比可以小的学术当中最大的那一个,那么在图中找出方法也是一样的,即是k左边的这颗子数当中,最右侧的那个值就是k的一个前驱值,然后我们要怎么做呢?并用k撇这一个前进时来取代k,然后我们再对kk进行删除就可以了,那么因为它是这是第1种情况,接下来我们来看第2种情况,第2种情况就是若大于k的子数中关键字个数大于这样一个数,则找出k的后继之k点,这里的后期值与前期值的概念也是相同的,也是它与平安大数是相似的,它就是k的比k大的数数当中最小的那一个,那么在图中找的方法就是找说k右侧的这个指数当中最左侧的哪一个值,就是k的后继值k撇,然后依旧我们再对k撇去算数就可以了,k撇点是在终端节点上的,所以删除方法也是采用了中端节点的乘方法,接下来我们就来看一个例子,依旧是删除33,现在我们用它到后面啊,是不是都是询问的方法啊,我们通过这样取得的方法,可以把在非中端节点上的删除操作转化为相对用到在终端节点上的删除,操作好,接下来我们来看最后一种,最后一种就是如果前后两个字数的个数均为这样一个值,则直接两个子节点合并就可以了,然后我们删除k就可以达到删除的目的,什么意思呢?我们就来看一个例子,此时我们是啊,删除的目的,这就是计划三好我们介绍了所有关删除操作的情况,在终端节点上的三种删除情况,在非中央节点上的三种删除信号,大家在考试过程当中只要确立的找到它是在哪一种情况下进行删除的,然后执行删除操作就可以了,然后这就中端节点上的值,所以剩下的方法用就可以