数据结构-查找1 最后有有关折半查找一点小概念! 选择题 1.对n个素的表做顺序查找时,若查找每个素的概率相同,则平均查找长度为( )。 A.(n-1)/2 B. n/2 C.(n+1)/2 D.n 答案:C 解释:总查找次数N=1+2+3+…+n=n(n+1)/2,则平均查找长度为N/n=(n+1)/2。 2.适用于折半查找的表的存储方式及素排列要求为( )。 A.链接方式存储,素无序 B.链接方式存储,素有序 C.顺序方式存储,素无序 D.顺序方式存储,素有序 答案:D 解释:折半查找要求线性表必须采用顺序存储结构,而且表中素按关键字有序排列。 3.如果要求一个线性表既能较快的查找,又能适应动态变化的要求,最好采用( )查找法。 A.顺序查找 B.折半查找 C.分块查找 D.哈希查找 答案:C 解释:分块查找的优点是:在表中插入和删除数据素时,只要找到该素对应的块,就可以在该块内进行插入和删除运算。由于块内是无序的,故插入和删除比较容易,无需进行大量移动。如果线性表既要快速查找又经常动态变化,则可采用分块查找。 4.折半查找有序表(4,6,10,12,20,30,50,70,88,100)。若查找表中素58,则它将依次与表中( )比较大小,查找结果是失败。 A.20,70,30,50 B.30,88,70,50 C.20,50 D.30,88,50 答案:A 解释:表中共10个素采用向下取整,第一次取(1+10)/2=5,与第五个素20比较,58大于20,再取(6+10)/2=8,与第八个素70比较,依次类推再与30、50比较,最终查找失败。 5.对22个记录的有序表作折半查找,当查找失败时,至少需要比较( )次关键字。 A.3 B.4 C.5 D.6 答案:B 解释:22个记录的有序表,其折半查找的判定树深度为 ëlog222û + 1=5,(公式)且该判定树不是满二叉树,即查找失败时至多比较5次,至少比较4次。因为叶子结点只存在于最后两层! 6.折半搜索与二叉排序树的时间性能( )。 A.相同 B.完全不同 C.有时不相同 D.数量级都是O(log2n) 答案:C 7.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是( )。 A.(100,80, 90, 60, 120,110,130) B.(100,120,110,130,80, 60, 90) C.(100,60, 80, 90, 120,110,130) D.(100,80, 60, 90, 120,130,110) 答案:C (直接画图就看出来了)解释:A、B、C、D四个选项构造二叉排序树都以100为根,易知A、B、D三个序列中第一个比100小的关键字为80,即100的左孩子为80,而C选项中100的左孩子为60,故选C。 8.在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A的左孩子的平衡因子为0右孩子的平衡因子为1,则应作( )型调整以使其平衡。 A.LL B.LR C.RL D.RR 答案:C 该二叉树类似与下图,因此要进行RL调整。
(由题意可知,A的平衡因子为1,又由于A的右孩子的平衡因子为1,左孩子的平衡因子为0,由此可知,A的右孩子上仅有右孩子,A的左孩子上无左右孩子,在平衡二叉树中插入一个结点后造成不平衡,说明插入结点只能插在A的右孩子的左孩子上,这种情形属于在右子树的左子树上插入结点的情形,即RL型) 记住这个就行了。 1.插入点位于x的左孩子的左子树中。 左左LL 右旋。 2.插入点位于x的左孩子的右子树中。 左右LR 较低的先左旋,转换为LL问题,再右旋。 3.插入点位于x的右孩子的左子树中。 右左RL 较低的先右旋,转化为RR问题。再左旋。 4.插入点位于x的右孩子的右子树中。 右右RR 左旋。 9.下列关于m阶B-树的说法错误的是( )。 A.根结点至多有m棵子树 B.所有叶子都在同一层次上 C.非叶结点至少有m/2 (m为偶数)或m/2+1(m为奇数)棵子树 D.根结点中的数据是有序的 答案:D(树中得关键字是有序的)(一个M阶的B-树有以下基本性质: 根结点的子女数为[2, M]; 每个非根节点所包含的关键字个数 j 满足:m/2 – 1 <= j <= m – 1; 除根结点以外的所有结点(不包括叶子结点)的度数正好是关键字总数加1,故内部子树个数 k 满足:m/2<= k <= m ; 所有的叶子结点都位于同一层。) 10.下面关于B-和B+树的叙述中,不正确的是( )。 A.B-树和B+树都是平衡的多叉树 B.B-树和B+树都可用于文件的索引结构 C.B-树和B+树都能有效地支持顺序检索 D.B-树和B+树都能有效地支持随机检索 答案:C (B-树只支持随机搜索,B+ 树支持随机和顺序搜索。顺序查询就是按顺序进行比较的查询算法,随机查询就是随机抽取某值进行比较的查询算法) 11.m阶B-树是一棵( )。 A.m叉排序树 B.m叉平衡排序树 C.m-1叉平衡排序树 D.m+1叉平衡排序树 答案:B(树叶中的关键字是有序的。) 12.下面关于哈希查找的说法,正确的是( )。 A.哈希函数构造的越复杂越好,因为这样随机性好,冲突小 B.除留余数法是所有哈希函数中最好的 C.不存在特别好与坏的哈希函数,要视情况而定 D.哈希表的平均查找长度有时也和记录总数有关 答案:C 哈希函数都要视情况而选择 13.下面关于哈希查找的说法,不正确的是( )。 A.采用链地址法处理冲突时,查找一个素的时间是相同的 B.采用链地址法处理冲突时,若插入规定总是在链首,则插入任一个素的时间是相同的 C.用链地址法处理冲突,不会引起二次聚集现象 D.用链地址法处理冲突,适合表长不确定的情况 答案:A 解释:在同义词构成的单链表中,查找该单链表表中不同素,所消耗的时间不同。 14.设哈希表长为14,哈希函数是H(key)=key%11,表中已有数据的关键字为15,38,61,84共四个,现要将关键字为49的素加到表中,用二次探测法解决冲突,则放入的位置是( )。 A.8 B.3 C.5 D.9 答案:D 解释:关键字15放入位置4,关键字38放入位置5,关键字61放入位置6,关键字84放入位置7,再添加关键字49,计算得到地址为5,冲突,用二次探测法解决冲突得到新地址为6,仍冲突,再用用二次探测法解决冲突,得到新地址为4,仍冲突,再用用二次探测法解决冲突,得到新地址为9,不冲突,即将关键字49放入位置9。 15.采用线性探测法处理冲突,可能要探测多个位置,在查找成功的情况下,所探测的这些位置上的关键字 ( )。 A.不一定都是同义词 B.一定都是同义词 C.一定都不是同义词 D.都相同 答案:A 解释:所探测的这些关键字可能是在处理其它关键字冲突过程中放入该位置的。(看看线性探测的例题就懂,线性探测冲突 函数值+1在mod表长的位置,所以不一定都是同义词)同义词就是他们H(key)直接相等,并不是或者经历增量序列等手段让相等 看25题 16.假设有k个关键字互为同义词,若用线性探测法把这k个关键字插入到哈希表中,至少要进行______ 次探测。 A. k-1 B. k C. k+1 D. k(k+1)/2 答案 D. k(k+1)/2 (线性探测再散列探查法,开放定址法的一种,公式为:Hi = (H(key) + di) MOD m。其中H(key)是哈希函数,m是哈希表表长,di为增量序列 线性探测再散列探查法的增量序列为di = 1, 2, 3, …, m-1 假设有10个关键字互为同义词 第一个关键字无冲突,探测一次; 第二个关键字与上一个冲突,需要进行线性探测再散列,共探测两次; 以此类推,共需探测1+2+3+…+10=55次 ) 17.对于下列关键字序列,不可能构成某二叉排序树中一条查找路径是______。 A. 95,22,91,24,94,71 B. 92,20,91,34,88,35 C. 21,89,77,29,36,38 D. 12,25,71,68,33,34 答案 A. 95,22,91,24,94,71 [解析]由二叉排序树的性质可知,一个数后面的数字都要全部大于或全部小于它,即也就是说是有序的 18.一棵二叉排序树是由关键字集合{18,43,27,44,36,39}中的某个关键字序列构建的,其中序遍历序列是______。 A. 树形未定,无法确定 B. 18,43,27,77,44,36,39 C. 18,27,36,39,43,44,77 D. 18,44,43,39,36,27,77 答案 C. 18,27,36,39,43,44,77 (同上题,中序遍历是有序的) 19.以下查找方法中速度最快的是______。 A. 折半查找 B. 顺序查找 C. 分块查找 D. 二叉排序树查找 答案 A. 折半查找 20.下面有关哈希表的叙述中,正确的是______。 A. 哈希查找的时间与素个数n成正比 B. 不管是开放地址法还是拉链法,查找时间都与装填因子α有关 C. 线性探测法存在堆积现象,而拉链法不存在堆积现象 D. 拉链法中装填因子α必须小于1 答案 B. 不管是开放地址法还是拉链法,查找时间都与装填因子α有关 21.在哈希查找过程中,可用______ 来处理冲突。 A. 除留余数法 B. 数字分析法 C. 线性探测法 D. 关键字比较法 答案 C. 线性探测法 22.哈希表中出现同义词冲突是指______。 A. 两个素具有相同的序号 B. 两个素的关键字不同,而其他属性相同 C. 数据素过多 D. 两个素的关键字不同,而对应的哈希函数值相同 答案 D. 两个素的关键字不同,而对应的哈希函数值相同 23.为提高哈希(Hash)表的查找效率,可以采取的正确措施是______。 Ⅰ.增大装填因子 Ⅱ.设计冲突少的哈希函数 Ⅲ.处理冲突时避免产生堆积现象 A. 仅Ⅰ B. 仅Ⅱ C. 仅Ⅰ、Ⅱ D. 仅Ⅱ、Ⅲ 答案 D. 仅Ⅱ、Ⅲ(1是增大了冲突) 24.采用线性探查法解决冲突的哈希表中,引起的堆积现象的原因是______。 A. 同义词之间发生冲突 B. 非同义词之间发生冲突 C. 同义词或非同义词之间发生冲突 D. 哈希表溢出 答案 B. 非同义词之间发生冲突 对比下面还有一个不一样的 (若不同的关键字通过散列函数映射到同一个值,则称它们为“同义词”;通过散列函数确定的位置已经存放了其他素,则称这种情况为“冲突”。——– 如果实在还是没明白的话,可以找个哈希表的题目看一下, 若在求A关键字的哈希地址的时候,如果该地址被B关键字占用,那就看看B关键字的哈希地址是否和A的哈希地址一样, 若B的哈希地址和A的哈希地址一样则是同义词冲突, 若B的哈希地址和A的哈希地址不一样,说明B是之前的同义词冲突提前把A的位置占了,这就是堆积 ) 26.由一个关键字序列建立一棵二叉排序树,该二叉排序树的形状取决于______。 A. 该序列的存储结构 B. 序列中的关键字的取值范围 C. 关键字的输入次序 D. 使用的计算机的软、硬件条件 答案 C. 关键字的输入次序 27.有一个有序表为(1,3,9,12,32,41,45,62,75,77,82,95,99),当采用折半查找法查找关键字为82的素时,______ 次比较后查找成功。 A. 1 B. 2 C. 4 D. 8 答案 C. 4
这里是奇数个素,可以看到第两步8+13=21,21/2=10.5取得是10,对应的判定树也就是向下取了 28.在长度为n的线性表中顺序查找时,成功情况下最多的比较次数是______。 A. 1 B. n C. n/2 D. (n+1)/2 答案 B. n 29.在长度为n的线性表中顺序查找时,不成功(也可以说最坏情况下)情况下平均比较次数是______。 A. n B. n/2 C. (n+1)/2 D. (n-1)/2 答案 A. n 最坏情况是要查找的素不在线性表内或在线性表尾部,需要比较n次 30.对长度为3的顺序表进行顺序查找,若查找第1个素的概率是1/2,查找第2个素的概率是1/3,查找第3个素的概率是1/6,则成功查找表中任一素的平均查找长度是______。 A. 5/3 B. 2 C. 7/3 D. 3 答案 A. 5/3 在长度为3的顺序表中,查找第一个素的查找长度为1,查找第二个素的查找长度为2,查找第三个素的查找长度为3,故有
31. 由n个数据素组成的两个表: 一个递增有序,一个无序。采用顺序查找算法,对有序表从头开始查找,发现当前素已不小于待查素时,停止查找,确定查找不成功,已知查找任一素的概率是相同的,则在两种表中成功查找( )。 A.平均时间后者小 B.平均时间两者相同 C.平均时间前者小 D.无法确定 答案 B。对于顺序查找,不管线性表是有序的还是无序的,成功查找第一个素的比较次数为1,成功查找第二个素的比较次数为2,以此类推,即每个素查找成功的比较次数只与其位置有关(与是否有序无关),因此查找成功的平均时间两者相同。 32.具有12个关键字的有序表中,对每个关键字的查找概率相同,折半查找算法查找成功 的平均查找长度为( ), 折半查找查找失败的平均查找长度为( )。 A. 37/12 B.35/12. C.39/13 D.49/13 【答案】A、D。假设有序表中素为A[0..11], 不难画出对它进行折半查找的判定树如下图所示,圆圈是查找成功结点,方形是虚构的查找失败结点。从而可以求出查找成功的ASL=(1 + 2×2 + 3×4 +4×5)/12 = 37/12,查找失败的ASL = (3×3 + 4×10)/13。
33.对线性表进行折半查找时,要求线性表必须______。 A. 以顺序方式存储 B. 以链接方式存储 C. 以顺序方式存储,且结点按关键字有序排序 D. 以链表方式存储,且结点按关键字有序排序 答案 C. 以顺序方式存储,且结点按关键字有序排序 34.折半查找对应的判定树中,外部结点是______。 A. 一次成功查找过程终止的结点 B. 一次失败查找过程终止的结点 C. 一次成功查找过程中经过的中间结点 D. 一次失败查找过程中经过的中间结点 答案 B. 一次失败查找过程终止的结点 35.有一个长度为n的有序顺序表,采用折半查找,经过i次比较成功找到的最多素个数是______。 A. 2i B. 2i+1 C. 2i-1 D. 2i-1 答案 C. 2i-1 (画图举例子既可以出来了,比如1 2 3 4 5,查找3,mid为3,比较一次就找到,找到的最多素个数为1,就是3,再比如查找4,mid一开始在3处,然后在4处,比较成功,比较两次就找到,找到的最多素个数为2) 36.对含有3600个素的顺序表进行分块查找,若索引表和方块均采用顺序查找方法,最理想的块长是______。 A. 1800 B. 60 C. 1200 D. log23600 答案 B. 60 37.长度为255的表,采用分块查找法,每块的最佳长度是? 16的平方256超过255,则每个块的长度应相等。最好分16快,前15块都放16,最后一块放255-15*16=15块 38.用分块查找法,有 2000 项的表分成多少块最理想?每块的理想长度是多少?若每块长度为 25 ,平均查找长度是多少? 解析: 表长 2000 ,分成 45 块,每块的理想长度为 45 (最后一块长 20 )。若每块长 25 ,则平均查找长度为 ASL=(80+1)/2+(25+1)/2=53.5 ASL=(b+1)/2+(s+1)/2(顺序查找确定块),或 ASL=19 ASL=⌈log2(b+1)⌉+(s+1)/2(折半查找确定块)。(书上有公式) 39.设待查关键字为47,且已存入变量k中,如果在查找过程中,和k进行比较的素依次是47、32、46、25、47,则所采用的查找方法______。 A. 是一种错误的方法 B. 可能是分块查找 C. 可能是顺序查找 D. 可能是折半查找 答案 B. 可能是分块查找 40.设待查关键字为47,且已存入变量k中,如果在查找过程中,和k进行比较的素依次是27、72、16、84、47,则所采用的查找方法是______。 A. 二叉排序树查找 B. 分块查找 C. 顺序查找 D. 折半查找 答案 C. 顺序查找 41.从19个素的序列中查找其中某个素,如果最多进行5次素之间的比较,则采用的查找方法只可能是______。 A. 折半查找 B. 分块查找 C. 顺序查找 D. 二叉排序树查找 答案 A. 折半查找(折半公式刚刚好满足) 42.在一棵高度为2的5阶B树中,所含关键字的个数至少是( ). A.5 B.7 C.8 D.14 答案 A。对于5阶B树,根结点只有达到5个关键字时才能产生分裂,成为高度为2的B树,因此高度为2的5阶B树所含关键字的个数最少是5。 43.在一棵具有15 个关键字的4阶B树中,含关键字的结点个数最多是( )。 A.5 B.6 C.10 D.15 答案 D。关键字数量不变,要求结点数量最多,即要求每个结点中含关键字的数量最少。根据4阶B树的定义,根结点最少含1个关键字,非根结点中最少含[4/21 -1 = 1个关键字,所以每个结点中关键字数量最少都为1个,即每个结点都有2个分支,类似于排序二叉树,而15个结点正好可以构造一个4层的4阶B树,使得叶结点全在第四层,符合B树的定义,因此选D。 44.已知一棵3阶B树中有2047个关键字,则此B树的最大高度为( ), 最小高度为( )。 A.11 B.10 C.8 D.7 答案A、D。
45.下列应用中,适合使用B+树的是( ). A.编译器中的词法分析 B.关系数据库系统中的索引 C.网络中的路由表快速查找 D.操作系统的磁盘空闲块管理 答案 B。B+树是应文件系统所需而产生的B树的变形,前者比后者更加适用于实际应用中的操作系统的文件索引和数据库索引,因为前者的磁盘读写代价更低,查询效率更加稳定。编译器中的词法分析使用有穷自动机和语法树。网络中的路由表快速查找主要靠高速缓存、路由表压缩技术和快速查找算法。系统一般使用空闲空间链表管理磁盘空闲块。所以选项B正确。 46.高度为5的3阶B树含有的关键字个数至少是( )。 A.15 B.31 C.62 D.242 答案 B。m阶B树的基本性质: ,根结点以外的非叶结点最少含有⌈m/2 ⌉- 1个关键字,代入m=3得到每个非叶结点中最少包含1个关键字,而根结点含有1个关键字,因此所有非叶结点都有两个孩子。此时其树形与h= 5的满二叉树相同,可求得关键字最少为31个。 47.只能在顺序存储结构.上进行的查找方法是( )。 A.顺序查找法 B.折半查找法 C.树型查找法 D.散列查找法 答案 B。顺序查找可以是顺序存储或链式存储:折半查找只能是顺序存储且要求关键字有序;树形查找法要求采用树的存储结构,既可以采用顺序存储也可以采用链式存储;散列查找中的链地址法解决冲突时,采用的是顺序存储与链式存储相结合的方式。 48.在开放定址法中散列到同一个地址而引起的“堆积”问题是由于( )引起的。 A.同义词之间发生冲突 B.非同义词之间发生冲突 C.同义词之间或非同义词之间发生冲突 D.散列表“溢出” 答案 C。在开放定址法中散列到同一个地址而产生的”堆积”问题,是同义词冲突的探查序列和非同义词之间不同的探查序列交织在- -起,导致关键字查询需要经过较长的探测距离,降低了散列的效率。因此要选择好的处理冲突的方法来避免“堆积”。 49.下列关于散列冲突处理方法的说法中,正确的有( ). I. 采用再散列法处理冲突时不易产生聚集 II.采用线性探测法处理冲突时,所有同义词在散列表中一定相邻 II.采用链地址法处理冲突时,若限定在链首插入,则插入任一个素的时间是相同的 IV.采用链地址法处理冲突易引起聚集现象 A. I和II B.I、II和III C.III和IV D. I和IV 答案 1和3。利用再散列法处理冲突时,按一定的距离,跳跃式地寻找“下一个”空闲位置,减少了发生聚集的可能,I正确。散列地址i的关键字,和为解决冲突形成的某次探测地址为i的关键字,都争夺地址i,i+ 1,…,因此不-定相邻,II 错误。III 正确。同义词冲突不等于聚集,链地址法处理冲突时将同义词放在同-一个链表中,不会引起聚集现象,IV错误。 50.采用开放定址法解决冲突的散列查找中,发生聚集的原因主要是( ). A.数据素过多 B.负载因子过大 C.散列函数选择不当 D.解决冲突的方法选择不当 答案 D。聚集是因选取不当的处理冲突的方法,而导致不同关键字的素对同-散列地址进行争夺的现象。用线性再探测法时,容易引发聚集现象。 51.现有长度为11 且初始为空的散列表Ht,散列函数是H (key) =key7, 采用线性探查(线性探测再散列)法解决冲突。将关键字序列87, 40, 30,6, 11, 22, 98, 20依次插入HT后,HT查找失败的平均查找长度是( ). A.4 B.5.25 C.6 D.6.29 【答案】C。采用线性探查法计算每个关键字的存放情况如下表所示
由于H(key) = 0~6,查找失败时可能对应的地址有7个,对于计算出地址为0的关键字key0,只有比较完0~8号地址后才能确定该关键字不在表中,比较次数为9;对于计算出地址为1的关键字key1,只有比较完1~8号地址后才能确定该关键字不在表中,比较次数为8;以此类推。需要特别注意的是,散列函数不可能计算出地址7,因此有ASL失败=(9+8+7+6+5+4+3)/7= 6 52.在下列查找的方法中,平均查找长度与结点个数无关的查找方法是: A. 顺序查找 B. 二分法 C. 利用哈希(散列)表 D. 利用二叉搜索树 答案 C. 利用哈希(散列)表 散列表查找法的特点是平均查找长度与结点个数n无关; 53.设散列表的地址区间为[0,16],散列函数为H(Key)=Key%17。采用线性探测法处理冲突,并将关键字序列{ 26,25,72,38,8,18,59 }依次存储到散列表中。素59存放在散列表中的地址是: A. 8 B. 9 C. 10 D. 11 答案 D. 11 线性探测法:这种探测方法可以将散列表假想成一个循环表,发生冲突时,从冲突地址的下一单顺序寻找空单,如果到最后一个位置也没找到空单,则回到表头开始继续查找,直到找到一个空位,就把此素放入此空位中。如果找不到空位,则说明散列表已满,需要进行溢出处理。 过程: 26 % 17 = 9,所以地址9存放26; 25 % 17 = 8,所以地址8存放25; 72 % 17 = 4,所以地址4存放72; 38 % 17 = 4,因为地址4冲突,往下移动一个单,所以地址5存放38; 8 % 17 = 8,因为地址8冲突,往下移动一个单,又因为地址9冲突,往下移动一个单,所以地址10存放8; 18 % 17 = 1,所以地址1存放18; 59 % 17 = 8,因为地址8冲突,往下移动一个单,又因为地址9冲突,往下移动一个单,又又因为地址10冲突,往下移动一个单,所以地址11存放59; 54.从一个具有N个结点的单链表中查找其值等于X的结点时,在查找成功的情况下,需平均比较多少个结点? A. N/2 B. N C. (N−1)/2 D. (N+1)/2 答案 D. (N+1)/2 从一个具有n个节点的单链表中查找其值等于x的节点,在查找成功的情况下,平均需要比较(n+1)/2个节点。 由于单链表只能进行单向顺序查找,以从第一个节点开始查找为例,查找第m个节点需要比较的节点数f(m)=m,查找成功的最好情况是第一次就查找成功,只用比较1个节点,最坏情况则是最后才查找成功,需要比较n个节点。 所以一共有n种情况,平均下来需要比较的节点为(1+2+3+…+(n-1)+n)/n=(n+1)/2。 55.若二叉搜索树是有N个结点的完全二叉树,则不正确的说法是: A.所有结点的平均查找效率是O(logN) B.最小值一定在叶结点上 C.中位值结点在根结点或根的左子树上 D.最大值一定在叶结点上 答案 D.最大值一定在叶结点上 首先我们从知道,比根节点大的放在右边,比根节点小的放在左边,那么有一种情况就是,比根节点大的放在左边,然后这个根节点又没有右孩子。如下图 很简单的例子,那么这棵树中最大值应该是9,而它不是叶子节点。
那么再看B选项,我们假设最小值不在叶节点,而同时我们不要忘了题目要求,是个完全二叉树,那么也就是说,整棵树的左下角,要么是从左到右有部分节点有孩子,要么都没有,那么根据假设条件,这个最小值不是叶节点,它必须有左孩子,那就说明它不是最小值,与假设相反。所以最小值一定在叶节点。最后是C选项,依然是完全二叉树的问题,如果是一棵满二叉树,那么中位值肯定在根节点上,因为左右子树节点数相同。而如果右子树不满,那么左子树的节点数多,所以中位数自然在左子树里,很好想。 56.若一棵二叉树的前序遍历序列是{ 4, 2, 1, 3, 6, 5, 7 },中序遍历序列是{ 1, 2, 3, 4, 5, 6, 7 },则下列哪句是错的? A.这是一棵完全二叉树 B.所有的奇数都在叶子结点上 C.这是一棵二叉搜索树 D.2是5的父结点 答案 D.2是5的父结点
57.将{ 32, 2, 15, 65, 28, 10 }依次插入初始为空的二叉排序树,则该树的前序遍历结果是。 A.2, 10, 15, 28, 32, 65 B.32, 2, 10, 15, 28, 65 C.10, 28, 15, 2, 65, 32 D.32, 2, 15, 10, 28, 65 答案 D.32, 2, 15, 10, 28, 65
58.已知由(60,30,56,78,12,45)序列构成的二叉排序树,其不成功查找的平均查找长度为( )。 A.21/7 B.28/7 C.15/6 D.21/6 答案 A.21/7
59.已知一棵由1、2、3、4、5、6、7共7个结点组成的二叉搜索树(查找树),其结构如图所示,问:根结点是什么?
A.1 B.4 C.5 D.不能确定 答案 C
1.顺序查找法适合于存储结构为( )的线性表。 顺序存储或链式存储 2.适用于折半查找的表的存储方式及素排列要求为( ) 顺序方式存储,素有序 3.将10个素散列到个单的哈希表中,则( )产生冲突。 可能会 (选择一个“好”的散列函数可以在一定程度上减少冲突,但在实际应用中,很难完全避免发生冲突,所以选择一个有效的处理冲突的方法是散列法的另一个关键问题;) 4.当在一个有序的顺序存储表上查找一个数据时,即可用折半查找,也可用顺序查找,但前者比后者的查找速度( )。 大部分情况要快一些(折半查找比其他查找快一点) 5.二叉查找树的查找效率与二叉树的( )有关。 树型 6.二叉查找树在 ( )时其查找效率最低 呈单枝树 7.如果要求一个线性表既能较快的查找,又能适应动态变化的要求,则可采用( )查找法。 分块查找 ( 分块查找是折半查找和顺序查找的一种改进方法,折半查找虽然具有很好的性能,但其前提条件时线性表顺序存储而且按照关键码排序,这一前提条件在结点树很大且表素动态变化时是难以满足的。而顺序查找可以解决表素动态变化的要求,但查找效率很低。如果既要保持对线性表的查找具有较快的速度,又要能够满足表素动态变化的要求,则可采用分块查找的方法。 分块查找的速度虽然不如折半查找算法,但比顺序查找算法快得多,同时又不需要对全部节点进行排序。当节点很多且块数很大时,对索引表可以采用折半查找,这样能够进一步提高查找的速度。 分块查找由于只要求索引表是有序的,对块内节点没有排序要求,因此特别适合于节点动态变化的情况。当增加或减少节以及节点的关键码改变时,只需将该节点调整到所在的块即可。在空间复杂性上,分块查找的主要代价是增加了一个辅助数组。 需要注意的是,当节点变化很频繁时,可能会导致块与块之间的节点数相差很大,没写快具有很多节点,而另一些块则可能只有很少节点,这将会导致查找效率的下降。 ) 判断题 1.将N个数据按照从小到大顺序组织存放在一个单向链表中。如果采用二分查找,那么查找的平均时间复杂度是O(logN)。 错 2.二叉树为二叉排序树的充分必要条件是其任一结点的值均大于其左孩子的值、小于其右孩子的值。 错 ( ①若它的左子树非空,则左子树上所有结点的值均小于根结点的值; ②若它的右子树非空,则右子树上所有结点的值均大于根结点的值; ③左、右子树本身又各是一棵二叉排序树。 所以应该是左右子树,不是左右孩子 ) 3.二叉搜索树(二叉排序树)的任意一棵子树中,关键字最小的结点必无左孩子,关键字最大的结点必无 右孩子。 对 4.二叉排序树一定是满二叉树。 错 5.从二叉搜索树的根结点一直沿右儿子向下找不一定能找到树中值最大的结点。 错 6.在任意一棵非空二叉搜索树中,删除某结点后又将其插入,则所得二叉搜索树与原二叉搜索树相同。 错 (删除前和删除后的根节点不一样,所以最后得到的二叉树也不一样 ) 7.当向二叉搜索树中插入一个结点,则该结点一定成为叶子结点。 对
8.若二叉搜索树中关键码互不相同,则其中最小素和最大素一定是叶子结点。 错 (注意这是一颗普通的二叉排序树,如果是平衡二叉排序树的话,有这么一个性质,其最小值必定在树的最左边,最大值在树的最右边。但是也不能保证是叶子节点,最小值可以有右子树,最大值可以有左子树。)
9.采用线性探测法处理散列时的冲突,当从哈希表删除一个记录时,不应将这个记录的所在位置置空,因为这会影响以后的查找。 对 10.在散列检索中,“比较”操作一般也是不可避免的。 对 11.对大小均为n的有序表和无序表分别进行顺序查找,在等概率查找的情况下,对于查找成功,它们的平均查找长度是相同的,而对于查找失败,它们的平均查找长度是不同的。 对 (扩展) 12.若对大小均为n的有序的顺序表和无序的顺序表分别进行顺序查找,试在下列三种情况下分别讨论两者在等概率时的平均查找长度是否相同? (1)查找不成功,即表中没有关键字等于给定值K的记录; (2)查找成功,且表中只有一个关键字等于给定值K的记录; (3)查找成功,且表中有若干个关键字等于给定值K的记录,一次查找要求找出所有记录。此时的平均查找长度应考虑找到所有记录时所用的比较次数。 1)相同,平均查找长度为
(2)相同,平均查找长度为
(3)对于有序顺序表,平均查找长度为
,对于无序顺序表,则为
。 13.折半查找的判定树一定是平衡二叉树。 对
注:图片选自网络 14.如果数据素保持有序,则检索时就可以采用二分检索方法。 错(顺序方式存储,素有序) 15.在散列表中,所谓同义词就是被不同散列函数映射到同一地址的两个素。 错 (不同的关键字通过散列函数映射到同一个值,则称它们为“同义词”) 16.在散列中,函数“插入”和“查找”具有同样的时间复杂度。 对 (插入和查找具有同样的时间复杂度O(1)。) 查找 —— 折半查找 1.算法思想
2.实现代码
3.查找效率分析
3.折半查找判定树构造(向上取整) 特点1:知道结点的个数就能画出折半查找判定树、进而算出ASL
特点2:折半查找判定树一定是平衡二叉树(注意树高)
特点3:折半查找判定树一定是二叉排序树(失败结点个数)
注:向上取整也有类似特性 4.折半查找时间复杂度
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/79865.html