前中后序普及到B树

还是说的树的前中后遍历

上一篇我简单说了一下二叉树的前中后序
这一篇文章我们拓展一下到B树
首先我们了解一下B树的定义
B树(多路平衡查找树)
看起来有点玄乎,其实B树我们可以简单理解为多叉树
然后这个多叉树里面分叉最大的那一部分
就是这里把这个分叉最大的一部分里面的数据记为m个,根据标准语言我们应该记成m个关键字。但是我们的关键字这里应该加一
就是我们的m代表数据中的Data
但是阶数其实是我们的分叉
也就是图中的指针*
所以我们可以的到一个这棵树的阶数为m+1
这里才是要记忆的
但是在教材中可以看到的是给的一般都是阶数m
所以我们的关键字个数要减一就是m-1

在这里插入图片描述
话不多说 我们上个图来说明一下这个B树的粗糙理解
一个m阶的树创造出来肯定不是为了看起来酷分许多叉
我们要保证它的查找效率就是不可以让一个结点
注意这里我们要为了保证B树的查找效率
我们通常设置为每个结点都有它的下限
就是m/2向上取整
这样子我们的树才有意义
在这里插入图片描述
其实这个是为了加深一下前中后序的遍历不是为了说B树
继续看这个树的中序遍历
B树是一个绝对平衡的树,而且B树的左子树小于根结点小于右子树
根据中序遍历左根右的方式我们可以得到一个有大小关系的序列
可以检验一下我们的遍历是否正确
根据刚开始讲的那个B树的结点结构
我们可以拆分这个树
看一下我们的前两层
在这里插入图片描述
在这里插入图片描述
看一下这个根节点
根据左根右
我们是不是得到了一个
(4 11)22(36 45)的遍历顺序
我再表达一下左节点的结构
在这里插入图片描述
是这个样子的结构
它的遍历是左→右的
也就是说这时候我们的关键字4变成了一个根节点
根据左根右我们又得到了一个新的东西
(1 3)4(6 7 8)
hhhc 是不是一个有序的序列
同理这时候把我们得到这一部分当成一大坨东西
那么关键字11的左边也就是这一堆东西
接着展开我们的结点11
(1 3 4 6 7 8)11(13 17)
没错 到这里我们的左边就已经访问结束了
然后这一坨东西我们又可以当成22的左结点
左根右的顺序
可以自己练习验证一下
最后得到的是一个有序序列
另外两种同理验证

猜你喜欢

转载自blog.csdn.net/qq_44965100/article/details/108486907
今日推荐