数据结构——查找の选择题整理

顺序查找和折半查找

1、折半查找和二叉排序树的时间性能()
A、相同
B、有时不相同
C、完全不同
D、无法比较

解析:选B
折半查找的性能可以用二叉排序树来衡量,是O(log2n),但是二叉排序树的时间性能还与存入的数据有关,如果是性能比较好的情况,则为O(log2n),如果形成了单侧二叉树,时间性能就为O(n)。如下图:
在这里插入图片描述


树型查找

1、含有20个结点的平衡二叉树的最大深度为()
A、4
B、5
C、6
D、7

解析:选C
平衡二叉树的结点数递推公式为:n0=0,n1=1,n2=2,nh=1+nh-1+nh-2。其中h为二叉树层数,nh表示构造h层二叉树最少需要多少个结点。
在这里插入图片描述

2、下列关于红黑树和AVL树的描述中,不正确的是()
A、两者都属于自平衡二叉树
B、两者插入、删除、查找的时间复杂度都相同
C、红黑树插入和删除过程至多有2次旋转操作
D、红黑树的任一结点的左右子树高度之差不超过2

解析:选C
对于A,自平衡二叉树是指二叉树当达不到平衡时,会自动进行调节,使之再次平衡。显然,红黑树和AVL树都是自平衡二叉树。
对于B,两者插入、删除、查找的时间复杂度都
对于C,在红黑树删除时,可能会出现由情况1(x的兄弟结点w是红色的)变为情况2(x的兄弟结点w是黑色的,w的左孩子是红色的,w的右孩子是黑色的)再变为情况3(x的兄弟结点w是黑色的,w的右孩子是红色的)
对于D,因为红黑树中,根节点到任意叶结点的路径上经过的黑色结点个数都相等,且除了根节点和第二层的叶结点之间,不允许有红红或黑黑的情况出现,红黑必须交叉出现,因此如果高度之差超过2,必定会出现红红或黑黑的情况或者是经过黑色结点数不相等的情况。

3、下列关于红黑树的说法中,正确的是()
A、红黑树是一种特殊的平衡树
B、如果红黑树的所有结点都是黑色的,那么它一定是一棵满二叉树
C、红黑树的任何一个分支结点都有两个非空孩子结点
D、红黑树的子树也一定是红黑树

解析:选B
对于A,平衡树要求左右子树高度之差不超过1,红黑树只要求不超过2即可。因此不是平衡树。
对于B,因为红黑树的叶结点必须是黑色的,根节点是黑色的,除了第一层了第二层可以连着出现黑黑的情况,其他不允许出现黑黑和红红的情况,且到达叶结点的路径上经过的黑色结点数必须相等,综上所述,所有结点都是黑色的红黑树只能有下图左边两种情况,全都是满二叉树。下图最右边的图可以看到不满足“到达叶结点的路径上经过的黑色结点数必须相等”。
在这里插入图片描述
对于C,可以只有一个孩子结点,如下图的右子树中红色的结点,只有一个孩子结点。
对于D,红黑树子树的根结点可能是红色的,因此就不是红黑树,如下图,虚线框里的左子树就不是红黑树。
在这里插入图片描述

4、在任意一棵非空平衡二叉树(AVL树)T1中,删除某节点v之后形成平衡二叉树T2,再将v插入T2形成平衡二叉树T3。下列关于T1与T3的叙述中,正确的是()
a.若v是T1的叶结点,则T1与T3可能不相同
b.若v不是T1的叶结点,则T1与T3一定不相同
c.若v不是T1的叶结点,则T1与T3一定相同
A、仅a
B、仅b
C、仅a和b
D、仅a和c

解析:选A
在下面的图中,分别演示了T1与T3不相等和相等的情况。其中蓝色的结点表示要删除或刚添加的结点。
在这里插入图片描述
下图分别是v不是T1的叶结点,T1与T3的情况,由图可知,T1与T3可能相同也可能不相同
在这里插入图片描述


B树和B+树

1、具有n个关键字的m阶B树,应有()个叶结点
A、n+1
B、n-1
C、mn
D、nm/2

解析:选A
叶结点对应的是查找失败的情况,因此求叶结点数量就是求查找失败的数量,即n+1

2、含有n个非叶结点的m阶B树中至少包含()个关键字
A、n(m+1)
B、n
C、n(⌈ m/2 ⌉-1)
D、(n-1)(⌈ m/2 ⌉-1)+1

解析:选D
⌈ m/2 ⌉-1表示除了根结点之外,其他非叶子结点至少含有的关键字数,除根结点外,共有n-1个非叶子结点,因此共有(n-1)(⌈ m/2 ⌉-1)给关键字,根节点最少可以有1个关键字,因此至少包含关键字数量为:(n-1)(⌈ m/2 ⌉-1)+1

3、已知一棵3阶B树中有2047个关键字,则此B树的最大高度为(),最小高度为()
A、11
B、10
C、8
D、7

解析:选A、D
logm(n+1) <= h <= log⌈m/2⌉((n+1)/2)+1,其中m表示阶数,n表示关键字个数。
带入解得6.94<=h<=11

4、下列关于B树和B+树的叙述中,不正确的是()
A、B树和B+树都能有效的支持顺序查找
B、B树和B+树都能有效地支持随机查找
C、B树和B+树都是平衡的多叉树
D、B树和B+树都可以用于文件索引结构

解析:选A
因为B+树叶子节点之间还有指针相连,因此支持顺序查找,且支持随即查找,而对于B树则不支持顺序查找,仅允许随机查找。

5、B+树不同于B树的特点之一是()
A、能支持顺序查找
B、结点中含有关键字
C、根节点至少有两个分支
D、所有叶结点都在同一层上

解析:选A
原因同上一题

6、高度为5的3阶B树含有的关键字个数至少是()
A、15
B、31
C、62
D、242

解析:选B
h<= log⌈m/2⌉((n+1)/2)+1,其中m=3,h=5,解得n=31


散列表

1、只能在顺序存储结构上进行的查找方法是()
A、顺序查找法
B、折半查找法
C、树型查找法
D、散列查找法

解析:选B
顺序存储一般利用数组实现。
顺序查找既可以顺序存储也可以链式存储。
折半查找必须要顺序存储且关键字有序
树型查找只要是满足树型存储即可,树型存储可以用顺序存储实现也可以用链式存储实现
散列查找中的链地址法解决冲突时,就是采用顺序存储和链式存储相结合的方法。
在这里插入图片描述

2、下列关于散列冲突处理方法的说法中,正确的有()
a.采用再散列法处理冲突时不易产生聚集
b.采用线性探测法处理冲突时,所有同义词在散列表中一定相邻
c.采用链地址法处理冲突时,若限定在链首插入,则插入任一个元素的时间是相同的
d.采用链地址法处理冲突易引起聚集现象
A、a和c
B、a、b和c
C、c和d
D、a和d

解析:选A
利用再散列法处理冲突时,是采用跳跃式的方法寻找下一个空闲位置,不易发生聚集。
采用线性探测法处理冲突时,所有同义词在散列表中不一定相邻,中间可能有原先就已经存在的数据,此时需要再向后寻找空闲位置。
采用链地址法处理冲突时,若限定在链首插入,则插入任一个元素仅需要直接插入数据即可,不用管后面有多少个数据。
链地址法处理冲突时将所有的同义词放在一个链表里,并不放在原先的数组中,不会引起聚集现象。

3、设有一个含有200个表项的散列表,用线性探测法解决冲突,按关键字查找时找到一个表项的平均探测次数不超过1.5,则散列表项应能容纳()个表项(设查找成功的平均查找长度为ASL=[1+1 / (1-α) ] / 2)。
A、400
B、526
C、624
D、676

解析:选A
由题干可知ASL<=1.5,代入公式解得α<=0.5。因为α=200/m,所以m>=400,因此选A

4、采用开放定址法解决冲突的散列查找中,发生聚集的原因主要是()
A、数据元素过多
B、负载因子过大
C、散列函数选择不当
D、解决冲突的方法选择不当

解析:选D
发生聚集主要是解决冲突的方法选择不当产生的,例如相同的散列函数下,选择链地址法解决冲突就不会产生聚集,而选择线性探测法解决冲突,就可能发生聚集。

5、若采用链地址法构造散列表,散列函数为H(key) = key MOD 17,则需(①)个链表。这些链的链首指针构成一个指针数组,数组的下标范围为(②)

A、17
B、13
C、16
D、任意

A、0~17
B、1~17
C、0~16
D、1~16

解析:选①:A;②:C
因为用17取模,所以结果可能是0 ~ 16共17个数,因此需要17个链表,数组从0开始到16结束,下标范围是0 ~ 16

  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值