数据结构易错题

本章节一共有20道选择题是数据结构的易错题,解析很详细,大家正常观看

我认为重要的会标红

1

正确答案是A

搜索两个数字和为sum,至少要遍历一遍数组,一个从左开始向右找,一个从右向左找

所以是O(n)

 2.

这道题选D,因为是时间复杂度,时间复杂度就是执行次数,因为是i<=n,每次2倍递增,所以是logN次

3.

答案:C

解析:大O是一个渐进表示法,不会去表示精确的次数,cpu的运算速度很快,估计精确的没有意义。

4.

 

  答案:B

  解析:

  此处开辟的是一个二维数组,数组有n行,每行分别有1,2,3,...n列,所以是n(n + 1)/2个元素空间,空间复杂度为n^2

5.

 

答案是C,因为空间复杂度的定义是额外开辟的空间,二维数组是固定的空间,并不是额外的空间,所以是常数次

6.

答案:B

解析: 

有效长度一般是rear-front, 但是循环队列中rear有可能小于front,减完之后可能是负数,所以需要+N,此时结果刚好是队列中有效元素个数,但如果rear大于front,减完之后就是有效元素个数了,再加N后有效长度会超过N,故需要%N。  

 7.

 8.

建议画一下图

答案:B

解析:

首先这棵二叉树的高度一定在3~4层之间:

三层:

A(B(C,D),()), A((),B(C,D)), A(B(C,()),D), A(B((),C),D),

A(B,C(D,())), A(B,C((),D))

四层:

如果为四层,就是单边树,每一层只有一个节点,除过根节点,其他节点都有两种选择,在上层节点的左边还是右边,所以2*2*2共8种

总共为14种。

9.

答案:B

根据完全二叉树的定义,前n-1层是满二叉树,最后一层也是连续排列的子树(中间不会中断),节点没有左孩子,就一定没有右孩子,要不然就没有完全二叉树了,所以必然是叶节点

解析:

完全二叉树中如果一个节点没有左孩子,则一定没有右孩子,必定为一个叶子节点,最后一层一定为叶子节点,但是倒数第二层也可能存在叶子节点。

10

答案:C

解析:

该题需要用到二叉树性质:在任意二叉树中,度为0的节点都比度为2的节点多1个,即 n0 = n2 + 1

n0 + n1 + n2 = 1001

这里假设度为1的是一个,或者0个带入式子发现度为1的只有0个,所以叶子结点就是n0是501

另外,在完全二叉树中,如果节点总个数为奇数,则没有度为1的节点,如果节点总个数为偶数,只有一个度为1的节点

因此:n0 + n1 + n2 = 1001 节点总数为奇数,没有度为1的节点

n0 + 0 + n2 = 2*n0-1 = 1001 n0 = 501

11

答案是B

树度为4,最小深度就是每个结点的孩子都是4的时候深度最小,4的0次方+4的一次方+4的2次方+    +4的n次方,当n为6的时候结点个数刚好大于1000,所以最小深度就是6

12

答案:A

解析:

树的特点是不相交,所以不可能有多个路径同时到达一个点。

13

答案:B

快排有序性能最差,是n方,有了三数取中可以达到n*logn

插入排序是部分有序性能最好,希尔排序是插入排序的优化所以希尔排序也会被顺序影响

解析:

快排: 初始顺序影响较大,有序是,性能最差

插入: 接近有序,性能最好

希尔:希尔是对插入排序的优化,这种优化是在无序的序列中才有明显的效果,如果序列接近有序,反而是插入最优。

堆排,归并,选择对初始顺序不敏感

14

答案选D很明显是快速排序的挖坑法,自己画一下图就行

15

答案:C

解析:

快排的非递归是在模拟递归的过程,所以时间复杂度并没有本质的变化,但是没有递归,可以减少栈空间的开销。栈和队列都可以实现。

16

答案:A

题意就是求空间复杂度,记住递归栈帧是求其高度

解析:

归并排序空间复杂度:n

快排: logn

希尔,堆排: 1

17

只有快排是有两种情况,有序是n方,三数取中能约等于n*logn,其他排序均为1种情况

答案:A

解析:

快排: n^2 ~ nlogn

归并: nlogn

选择: n^2

堆排: nlogn

 18

答案B

其实这道题就是将时间复杂度的精确值大致算出来然后带入】

每次比较完会缩短数组长度,可以类比成1+2+。。。+n也就是带入是B选项

19

 

就记住降序建小堆,升序建大堆就行

而且这道题为了建小堆可以用向下调整算法,从倒数第一个父节点开始调整,直到第一个结点结束,不太理解的话可以看看我之前写过的二叉树与堆,有详细的堆调整算法

二叉树和堆-CSDN博客https://blog.csdn.net/eixjdj/article/details/145232674?spm=1001.2014.3001.5501

因为是建小堆所以选A

20

 

答案:C

解析:

这里说的是快排的第二趟,即在第一趟快排的结果的基础上进行的,如果已经经过了一趟排序,则会通过第一趟选择的基准值划分两个子区间,每个子区间也会以区间内选择的基准值划分成两部分。

A: 第一趟的基准值可以为2, 第二趟的基准值可以为3

B: 第一趟的基准值可以为2, 第二趟的基准值可以为9

C: 第一趟的基准值只能是9,但是第二趟的基准值就找不出来,没有符合要求的值作为基准值,所以不可能是一个中间结果。

D: 第一趟的基准值可以为9, 第二趟的基准值可以为5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值