X32专项练习部分22
构建5阶B树
/*
在一个空的5阶B-树中依次插入关键字序列{6,8,15,16,22,10,18,32,20}
插入完成后,关键字6所在结点包含的关键字个数为
正确答案: B
2
3
4
5
这里先补充1个构建5阶B树的过程
比如用关键字序列
{1,2,6,7,11,4,8,13,10,5,17,9,16,20,3,12,14,18,19,15}
来构建一棵B-树
由于是5阶B树
每个节点最多有5个子节点
所以每个节点内部关键字个数为1-4个
于是,第一步是插入1,2,6,7作为一个节点
然后插入11,得到1,2,6,7,11. 因为节点个数超过4,所以需要对该节点进行拆分
选取中间节点6,进行提升,提升为父节点
见图1-1
接着插入节点
因为最右下的节点内有5个元素,超过最大个数4了,所以需要进行拆分
把中间节点10进行提升,上升到和6一起
见图1-2
接着插入节点
当插入20的时候
有1个节点内部关键字数量又超过4个了
需要再次拆分,16提升为父节点
见图1-3
当插入完15关键字
提升完父节点
会发现最高父节点内部关键字数量超过4个
需要提升中间值为父节点
于是10成为最高父节点
见图1-4
重点在于
把一个节点提升为父节点的时候千万别忘了拆分
这道题我构建了1把
6关键字所在节点包含6 8 10
兄弟节点分别包含关键字
16,18
22,32
最高父节点为15,20
*/
1-1

1-2

1-3

1-4

构建平衡二叉树
/*
依次将关键字序列7, 6, 4, 10, 8, 11插入到一棵空的平衡二叉树中
插入后的平衡二叉树的根结点为
正确答案: D
7
6
10
8
平衡二叉树:
是一种特殊的二叉排序树,其左右子树都是平衡二叉树
要求BF(平衡因子=其左子树高-其右子树高)只能取0,1,-1
注意这道题是边插入边调整
插入4的时候调整1次
插入8的时候调整1次
当时是
7
\
10
/
8
通过二叉排序树特点可知
当前节点右子节点的左子节点
一定介于当前节点和当前节点的右子节点之间
所以
8

本文深入探讨了5阶B树的构建,平衡二叉树的设计,以及子集树和排序树的概念与操作。通过实例解析了子集树的二叉树抽象,排序树的全排列计算,并提供了相关练习,如三叉树中度为0节点的查找,时间复杂度分析,哈夫曼树和编码的理解,以及线索二叉树子树判断的技巧。
最低0.47元/天 解锁文章
1355

被折叠的 条评论
为什么被折叠?



