判断题
1-1
在具有N个结点的单链表中,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。 (3分)
T F
1-2
无向连通图至少有一个顶点的度为1。 (3分)
T F
1-3
算法分析的两个主要方面是时间复杂度和空间复杂度的分析。 (2分)
T F
1-4
某二叉树的后序和中序遍历序列正好一样,则该二叉树中的任何结点一定都无右孩子。(3分)
T F
1-5
将1、2、3、4、5、6顺序插入初始为空的AVL树中,当完成这6个元素的插入后,该AVL树的先序遍历结果是:4、2、1、3、5、6。 (3分)
T F
1-6
如果无向图G必须进行两次广度优先搜索才能访问其所有顶点,则G一定有2个连通分量。(3分)
T F
1-7
一棵有124个结点的完全二叉树,其叶结点个数是确定的。 (3分)
T F
1-8
任何二叉搜索树中同一层的结点从左到右是有序的(从小到大)。 (3分)
T F
1-9
所谓“循环队列”是指用单向循环链表或者循环数组表示的队列。 (2分)
T F
1-10
若一个栈的输入序列为{1, 2, 3, 4, 5},则不可能得到{3, 4, 1, 2, 5}这样的出栈序列。 (3分)
T F
单选题
2-1
先序遍历图示二叉树的结果为 (4分)
- A,B,D,H,I,E,C,F,G
- H,D,I,B,E,A,F,C,G
- H,I,D,B,E,F,G,A,C
- A,B,C,D,H,E,I,F,G
2-2
一棵二叉树中,双分支结点数为15,单分支结点数为30,则叶子结点数为()个。 (4分)
- 16
- 15
- 17
- 47
2-3
设一棵非空完全二叉树 T 的所有叶节点均位于同一层,且每个非叶结点都有 2 个子结点。若 T 有 k 个叶结点,则 T 的结点总数是:(4分)
- 2k
- k2
- 2k−1
- 2k−1
作者: 考研真题
单位: 浙江大学
2-4
对最小堆(小顶堆){1,3,2,12,6,4,8,15,14,9,7,5,11,13,10} 进行三次删除最小元的操作后,结果序列为:(4分)
- 4,6,5,13,7,10,8,15,14,12,9,11
- 4,5,6,7,8,9,10,11,12,13,14,15
- 4,6,5,12,7,10,8,15,14,9,13,11
- 4,5,6,12,7,10,8,15,14,13,9,11
2-5
表达式a*(b+c)-d
的后缀表达式是: (4分)
a b c + * d -
a b c d * + -
a b c * + d -
- + * a b c d
2-6
给定N×N的二维数组A,则在不改变数组的前提下,查找最大元素的时间复杂度是:(4分)
- O(NlogN)
- O(N)
- O(N2)
- O(N2logN)
2-7
在图中自d点开始进行深度优先遍历算法可能得到的结果为: (4分)
- d,e,a,c,f,b
- d,f,c,e,a,b
- d,a,c,f,e,b
- d,a,e,b,c,f
2-8
在单链表中,若p
所指的结点不是最后结点,在p
之后插入s
所指结点,则执行 (4分)
s->next=p->next; p=s;
s->next=p; p->next=s;
s->next=p->next; p->next=s;
p->next=s; s->next=p;
2-9
循环顺序队列中是否可以插入下一个元素()。 (4分)
- 与队头指针和队尾指针的值有关
- 只与队尾指针的值有关,与队头指针的值无关
- 只与数组大小有关,与队首指针和队尾指针的值无关
- 与曾经进行过多少次插入操作有关
2-10
设一段文本中包含字符{a, b, c, d, e},其出现频率相应为{3, 2, 5, 1, 1}。则经过哈夫曼编码后,文本所占字节数为: (4分)
- 36
- 25
- 12
- 40
2-11
下列函数中,哪两个函数具有相同的增长速度:(4分)
- N和2/N
- 2N和NN
- N2logN和NlogN2
- NlogN2和NlogN
2-12
在并查集问题中,已知集合元素0~8所以对应的父结点编号值分别是{ 1, -4, 1, 1, -3, 4, 4, 8, -2 }(注:−n表示树根且对应集合大小为n),那么将元素6和8所在的集合合并(要求必须将小集合并到大集合)后,该集合对应的树根和父结点编号值分别是多少? (4分)
- 1和-6
- 4和-5
- 8和-5
- 8和-6
程序填空题
5-1
下列代码的功能是返回带头结点的单链表L
的逆转链表。
List Reverse( List L )
{
Position Old_head, New_head, Temp;
New_head = NULL;
Old_head = L->Next;
while ( Old_head ) {
Temp = Old_head->Next;
//输入代码(6分);
New_head = Old_head;
Old_head = Temp;
}
//输入代码(6分);
return L;
}
5-2
下列代码的功能是将小顶堆H
中指定位置P
上的元素的整数键值下调D
个单位,然后继续将H
调整为小顶堆
void DecreaseKey( int P, int D, PriorityQueue H )
{
int i, key;
key = H->Elements[P] - D;
for ( i = /*输入代码(6分)*/; H->Elements[i/2] > key; i/=2 )
//输入代码(6分);
H->Elements[i] = key;
}