《数据结构》习题汇编08 第八章 查找 试题.docx
- 文档编号:25584365
- 上传时间:2023-06-10
- 格式:DOCX
- 页数:18
- 大小:49.67KB
《数据结构》习题汇编08 第八章 查找 试题.docx
《《数据结构》习题汇编08 第八章 查找 试题.docx》由会员分享,可在线阅读,更多相关《《数据结构》习题汇编08 第八章 查找 试题.docx(18页珍藏版)》请在冰豆网上搜索。
《数据结构》习题汇编08第八章查找试题
数据结构课程(本科)第七章试题
一、单项选择题
1.若搜索每一个元素的概率相等,则在长度为n的顺序表上搜索到表中任一元素的平均搜索长度为()。
A.nB.n+1C.(n-1)/2D.(n+1)/2
2.对长度为10的顺序表进行搜索,若搜索前面5个元素的概率相同,均为1/8,搜索后面5个元素的概率相同,均为3/40,则搜索到表中任一元素的平均搜索长度为()。
A.5.5B.5C.39/8D.19/4
3.对长度为3的顺序表进行搜索,若搜索第一个元素的概率为1/2,搜索第二个元素的概率为1/3,搜索第三个元素的概率为1/6,则搜索到表中任一元素的平均搜索长度为()。
A.5/3B.2C.7/3D.4/3
4.对长度为n的有序单链表,若搜索每个元素的概率相等,则顺序搜索到表中任一元素的平均搜索长度为()。
A.n/2B.(n+1)/2C.(n-1)/2D.n/4
5.对于长度为n的有序顺序表,若采用折半搜索,则对所有元素的搜索长度中最大的为()的值的向上取整。
A.log2(n+1)B.log2nC.n/2D.(n+1)/2
6.对于长度为n的有序顺序表,若采用折半搜索,则对所有元素的搜索长度中最大的为()的值的向下取整加一。
A.log2(n+1)B.log2nC.n/2D.(n+1)/2
7.对于长度为9的有序顺序表,若采用折半搜索,在等概率情况下搜索成功的平均搜索长度为()的值除以9。
A.20B.18C.25D.22
8.对于长度为18的有序顺序表,若采用折半搜索,则搜索第15个元素的搜索长度为()。
A.3B.4C.5D.6
9.对具有n个元素的有序顺序表进行折半搜索,则搜索任一元素的时间复杂度为()。
A.O(n)B.O(n2)C.O
(1)D.O(log2n)
10.在一棵高度为h的具有n个元素的二叉搜索树中,搜索所有元素的搜索长度中最大的为()。
A.nB.log2nC.(h+1)/2D.h+1
11.从具有n个结点的二叉搜索树中搜索一个元素时,在等概率情况下进行成功搜索的时间复杂度大致为()。
A.O(n)B.O
(1)C.O(log2n)D.O(n2)
12.从具有n个结点的二叉搜索树中搜索一个元素时,在最坏情况下进行成功搜索的时间复杂度为()。
A.O(n)B.O
(1)C.O(log2n)D.O(n2)
13.向具有n个结点的二叉搜索树中插入一个元素时,其时间复杂度大致为()。
A.O
(1)B.O(log2n)C.O(n)D.O(nlog2n)
14.在一棵AVL树(高度平衡的二叉搜索树)中,每个结点的平衡因子的取值范围是()。
A.-1~1B.-2~2C.1~2D.0~1
15.向一棵AVL树(高度平衡的二叉搜索树)插入元素时,可能引起对最小不平衡子树的调整过程,此调整分为()种旋转类型。
A.2B.3C.4D.5
16.向一棵AVL树(高度平衡的二叉搜索树)插入元素时,可能引起对最小不平衡子树的左单或右单旋转的调整过程,此时需要修改相关()个结点指针域的值。
A.2B.3C.4D.5
17.向一棵AVL树(高度平衡的二叉搜索树)插入元素时,可能引起对最小不平衡子树的双向旋转的调整过程,此时需要修改相关()个结点指针域的值。
A.2B.3C.4D.5
参考答案:
1.D2.C3.A4.B5.A
6.B7.C8.A9.D10.D
11.C12.A13.B14.A15.C
16.A17.C
二、填空题
1.以顺序搜索方法从长度为n的顺序表或单链表中搜索一个元素时,其时间复杂度为________。
2.对长度为n的搜索表进行搜索时,假定搜索第i个元素的概率为pi,搜索长度(即在搜索过程中依次同有关元素比较的总次数)为ci,则在搜索成功情况下的平均搜索长度的计算公式为________。
3.假定一个顺序表的长度为40,并假定搜索每个元素的概率都相同,则在搜索成功情况下的平均搜索长度为________。
4.以折半搜索方法从长度为n的有序表中搜索一个元素时,时间复杂度为________。
5.从有序表(12,18,30,43,56,78,82,95)中折半搜索元素56时,其搜索长度为________。
6.假定对长度n=50的有序表进行折半搜索,则对应的判定树中最后一层的结点数为______个。
7.从一棵二叉搜索树中搜索一个元素时,若给定值小于根结点的值,则需要向________继续搜索。
8.从一棵二叉搜索树中搜索一个元素时,若给定值大于根结点的值,则需要向________继续搜索。
9.向一棵二叉搜索树中插入一个新元素时,若该新元素的值小于根结点的值,则应把它插入到根结点的________上。
10.向一棵二叉搜索树中插入一个新元素时,若该新元素的值大于根结点的值,则应把它插入到根结点的________上。
11.向一棵二叉搜索树________一个元素时,若查找到的根结点为空值,则应把该元素结点链接到这个空指针位置上。
12.根据n个元素建立一棵二叉搜索树的时间复杂度性大致为_____________。
13.在一棵AVL树(高度平衡的二叉搜索树)中,每个结点的左子树高度与右子树高度之差的绝对值不超过________。
14.根据一组记录(56,42,50,64,48)依次插入结点生成一棵AVL树(高度平衡的二叉搜索树)时,当插入到值为_______的结点时需要进行旋转调整。
15.根据一组记录(56,74,63,64,48)依次插入结点生成一棵AVL树(高度平衡的二叉搜索树)时,当插入到值为63的结点时需要进行________________调整。
16.根据一组记录(56,42,38,64,48)依次插入结点生成一棵AVL树(高度平衡的二叉搜索树)时,当插入到值为38的结点时需要进行____________调整。
17.根据一组记录(56,42,73,50,64,48,22)依次插入结点生成一棵AVL树(高度平衡的二叉搜索树)时,当插入到值为_______的结点时才出现不平衡,需要进行旋转调整。
18.在一棵AVL树(高度平衡的二叉搜索树)上进行插入或删除元素时,所需的时间复杂度为_________。
参考答案:
1.O(n)2.
3.20.54.O(log2n)
5.36.197.左子树8.右子树
9.左子树10.右子树11.插入12.O(nlog2n)
13.114.5015.先右后左双旋转16.右单旋转
17.4818.O(lon2n)
三、判断题
1.在顺序表中进行顺序搜索时,若各元素的搜索概率不等,则各元素应按照搜索概率的降序排列存放,则可得到最小的平均搜索长度。
2.进行折半搜索的表必须是顺序存储的有序表。
3.能够在链接存储的有序表上进行折半搜索,其时间复杂度与在顺序存储的有序表上相同。
4.假定用两个有序单链表表示两个集合,则这两个集合交运算得到的集合单链表,其长度小于参加运算的任一个集合单链表的长度。
5.假定用两个有序单链表表示两个集合,则这两个集合的差运算得到的集合单链表,其长度小于参加运算的任一个集合单链表的长度。
6.折半搜索所对应的判定树,既是一棵二叉搜索树,又是一棵理想平衡二叉树(它的特点是除最底层结点外其他各层结点数都是满的,最底层的若干结点可能散布在该层各处)。
7.对二叉搜索树进行前序遍历得到的结点序列是一个有序序列。
8.在由n个元素组成的有序表上进行折半搜索时,对任一个元素进行搜索的长度(即比较次数)都不会大于log2n+1。
9.根据n个元素建立一棵二叉搜索树的时间复杂度大致为O(log2n)。
10.根据n个元素建立一棵二叉搜索树的时间复杂度大致为O(nlog2n)。
11.对于同一组记录,若生成二叉搜索树时插入记录的次序不同则得到不同结构的二叉搜索树。
12.对于同一组记录,生成二叉搜索树的结构与插入记录的次序无关。
13.对于两棵具有相同记录集合而具有不同结构的二叉搜索树,按中序遍历得到的结点序列是相同的。
14.在二叉搜索树中,若各结点的搜索概率不等,使得搜索概率越大的结点离树根越近,则得到的是最优二叉搜索树。
15.在二叉搜索树中,若各结点的搜索概率不等,使得搜索概率越小的结点离树根越近,则得到的是最优二叉搜索树。
参考答案:
1.是2.是3.否4.是5.否
6.是7.否8.是9.否10.是
11.是12.否13.是14.是15.否
四、运算题
1.一个一维数组a[10]中存储着一个有序表,该有序表为:
(15,26,34,39,45,56,58,63,74,76),根据折半搜索所对应的判定树,写出该判定树的广义表表示,并求出在等概率情况下搜索成功的平均搜索长度。
判定树的广义表表示:
_______________________________
平均搜索长度:
_________________
2.已知一个有序表(15,26,34,39,45,56,58,63,74,76,83,94)顺序存储于一维数组a[12]中,根据折半搜索过程填写成功搜索下表中所给元素34,56,58,63,94时的比较次数。
元素值
比较次数
3.假定一个线性序列为(38,52,25,74,68,16,30,54,90,72),根据此线性序列中元素的排列次序生成一棵二叉搜索树,求出对该二叉搜索树查找38,74,68,30,72等元素时的比较次数。
待查元素:
比较次数:
4.假定一个线性序列为(56,27,34,95,73,16,50,62,65),根据此线性序列中元素的排列次序生成一棵二叉搜索树,求出该二叉搜索树的高度(假定树根结点的高度为0)、度为2的结点个数和叶子结点个数。
高度:
_____________
度为2的结点个数:
____________
叶子结点个数:
____________
5.假定一个线性序列为(38,42,55,15,23,44,30,74,48,26),根据此线性序列中元素的排列次序生成一棵二叉搜索树,求出该二叉搜索树中左子树为空的所有单支结点和右子树为空的所有单支结点,请按从小到大的次序排列写出。
左子树为空的所有结点:
____________
右子树为空的所有结点:
____________
6.已知一棵二叉搜索树的广义表表示为:
28(12(,16),49(34(30),72(63))),按主教材介绍的删除算法,求出从中依次删除72,12,49,28结点后得到的二叉搜索树的广义表表示。
广义表表示:
_____________________________
7.假定一组数据对象为(40,28,16,56,50,32,30,63),按次序插入每个对象生成一棵AVL树(高度平衡的二叉搜索树),根据插入过程填写下表,在相应位置填写所需要的调整类型:
“左单旋转”、“右单旋转”、“先左后右双旋转”、“先右后左双旋转”,若不需要旋转则填写“无”。
数据:
调整:
8.假定一组数据对象为(40,28,16,56,50,32,30,63,44,38),按次序插入每个对象生成一棵AVL树(高度平衡的二叉搜索树),请回答插入后需调整的结点个数和插入后不调整的结点个数。
插入时伴随旋转调整的结点个数:
___________
插入不调整的结点个数:
__________
9.假定一组记录为(36,75,83,54,12,67,60,40),按次序插入每个结点生成一棵AVL树(高度平衡的二叉搜索树),请回答在插入时需进行“左单旋转”、“右单旋转”、“先左后右双旋转”、“先右后左双旋转”,“不调整”的结点数各是多少?
左单旋转结点个数:
____________
右单旋转结点个数:
____________
先左后右双旋转结点个数:
___________
先右后左双旋转结点个数:
___________
不调整结点个数:
____________
10.假定一组记录为(38,42,55,15,23,44,30,74,48,26),按次序插入每个结点生成一棵AVL树(高度平衡的二叉搜索树),给出最后得到的AVL树中度为2、度为1和度为0的结点个数。
度为2的结点个数:
__________
度为1的结点个数:
__________
度为0的结点个数:
__________
参考答案:
1.判定树的广义表表示:
45(26(15,34(,39)),63(56(,58),74(,76)))//4分
平均查找长度:
29/10//2分
2.
判断结果
元素值
比较次数//对1个给1分,全对给6分
3.
判断结果
待查元素:
比较次数:
//对1个给1分,全对给6分
4.高度:
4//2分
度为2的结点个数:
2//2分
叶子结点个数:
3//2分
5.左子树为空的结点:
15,23,42,44//全对4分,否则不得分
右子树为空的结点:
30//2分
6.广义表表示:
30(16,63(34))
7.插入结果和调整类型为
插入数据:
调整类型:
8.插入时伴随旋转调整的结点个数:
4//3分,若误差1给1分,其余情况不得分
插入不调整的结点个数:
6//3分,若误差1给1分,其余情况不得分
9.左单旋转结点个数:
1//1分
右单旋转结点个数:
0//1分
先左后右双旋转结点个数:
1//1分
先右后左双旋转结点个数:
0//1分
不调整结点个数:
6//2分
10.度为2的结点个数:
4//2分
度为1的结点个数:
1//2分
度为0的结点个数:
5//2分
五、算法分析题
1.已知二叉搜索树中的结点类型用BinTreeNode表示,被定义为:
structBinTreeNode{ElemTypedata;BinTreeNode*leftChild,*rightChild;};
其中data为结点值域,leftChild和rightChild分别为指向左、右子女结点的指针域。
假定具有BinTreeNode*类型的指针参数BST指向一棵二叉搜索树的根结点,试根据下面的函数定义指出此算法所能实现的功能。
ElemTypeunknown(BinTreeNode*BST){
if(BST==NULL){cerr<<"此树为空树"< (1);} BinTreeNode*t=BST; while(t->rightChild! =NULL)t=t->rightChild; returnt->data; } 算法功能: ______________________________________________________ 2.假定p1和p2是两个有序单链表的表头指针,用来表示两个集合,单链表中的结点包括值域data和指向后继结点的指针域link,试根据下面算法指出算法功能。 LinkNode*unknown(LinkNode*p1,LinkNode*p2){ LinkNode*p3=newLinkNode,*p=p3; while(p1! =NULL&&p2! =NULL){ LinkNode*newptr=newLinkNode; if(p1->data {newptr->data=p1->data;p1=p1->link;} elseif(p1->data>p2->data) {newptr->data=p2->data;p2=p2->link;} else{newptr->data=p1->data;p1=p1->link;p2=p2->link;} p3->link=newptr;p3=newptr; } if(p2! =NULL)p1=p2; while(p1! =NULL){ p3=p3->link=newLinkNode; p3->data=p1->data;p1=p1->link; } p3->link=NULL; returnp->link; } 算法功能: ______________________________________________________ 3.假定p1和p2是两个单链表的表头指针,用来表示两个集合,单链表中的结点包括值域data和指向后继结点的指针域link,试根据下面算法指出算法功能。 intunknown(LinkNode*p1,LinkNode*p2){ while(p2! =NULL){ LinkNode*r=p1; while(r! =NULL){ if(p2->data==r->data)break; r=r->link; } if(r==NULL)return0; p2=p2->link; } return1; } 算法功能: ______________________________________________________ 4.假定HL为保存一个集合的有序单链表的表头指针,item为一个新元素,HL单链表中的结点包括值域data和指向后继结点的指针域link,试根据下面算法指出算法功能。 voidunknown(LinkNode*&HL,constElemType&item){ LinkNode*newptr; Newptr=newLinkNode; Newptr->data=item; if(HL==NULL||item newptr->link=HL; HL=newptr; return; } LinkNode*cp,*ap; ap=HL;cp=HL->link; while(cp! =NULL){ if(item ap=cp;cp=cp->link; } newptr->link=cp; ap->link=newptr; } 算法功能: ______________________________________________________ 5.已知二叉搜索树中的结点类型用BinTreeNode表示,被定义为: structBinTreeNode{ElemTypedata;BinTreeNode*leftChild,*rightChild;}; 其中data为结点值域,leftChild和rightChild分别为指向左、右子女结点的指针域。 假定pt所指向的二叉搜索树的广义表表示为: 25(10(5,16(12)),40(32(,38))),按照下面算法,则: (1)执行unknown(pt,40)调用后返回的值为________。 (2)执行unknown(pt,38)调用后返回的值为________。 (1)执行unknown(pt,5)调用后返回的值为________。 (1)执行unknown(pt,60)调用后返回的值为________。 intunknown(BinTreeNode*t,ElemTypex){ if(t==NULL)return0; elseif(t->data==x)return1; elseif(t->data>x) return1+unknown(t->leftChild,x); else return1+unknown(t->rightChild,x); } 6.已知二叉树中的结点类型用BinTreeNode表示,被定义为: structBinTreeNode{ElemTypedata;BinTreeNode*leftChild,*rightChild;}; 其中data为结点值域,leftChild和rightChild分别为指向左、右子女结点的指针域。 假定具有BinTreeNode*类型的指针参数bt指向一棵二叉树的根结点,引用参数x初始具有最小值(即小于树中所有结点的值),试根据下面的函数定义指出此算法所能实现的功能。 intunknown(BinTreeNode*bt,ElemType&x){ if(bt==NULL)return1; else{ if(unknown(bt->leftChild,x)==0)return0; if(bt->data x=bt->data; if(unknown(bt->rightChild,x)==0)return0; elsereturn1; } } 算法功能: ______________________________________________________ 参考答案: 1.算法功能: 从二叉搜索树BST中查找出具
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 数据结构习题汇编08 第八章 查找 试题 习题 汇编 08 第八