N2答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》课程第2次过程考试
学号:________________ 姓名:________________ 成绩:________________
一、选择题(共30分。每小题2分。)
01、假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为 B 个。
A.15 B.16 C.17 D.47
02、任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序 A 。
A.不发生改变
B.发生改变
C.不能确定
D.以上都不对
03、设a,b为一棵二叉树上的两个结点,在中序遍历时,a在b前的条件是 B 。
A.a在b的右方B.a在b的左方C.a是b的祖先D.a是b的子孙
04、若用孩子兄弟链表作为树的存储结构,则树的后序遍历应采用二叉树的 C 。
A、层次遍历算法
B、前序遍历算法
C、中序遍历算法
D、后序遍历算法
05、如果二叉树中结点的先序序列是...a...b...,中序序列是...b...a...,则 D 。
A.结点a和结点b分别在某结点的左子树和右子树中 B.结点b在结点a的右子树中
C.结点a和结点b分别在某结点的两棵非空子树中 D.结点b在结点a的左子树中
06、某二叉树的先序序列和后序序列正好相反,则该二叉树一定是 B 的二叉树。
A.空或只有一个结点 B.高度等于其节点数 C.任一结点无左孩子 D.任一结点无右孩子07、具有n(n>0)个结点的完全二叉树的深度为 C 。
A.⎡log2(n)⎤ B.⎣log2(n)⎦ C.⎣log2(n)⎦+1 D.⎡log2(n)+1⎤
08、由带树为9,2,5,7的四个叶子结点树造一棵哈夫曼树,该树的带权路径长度为 D 。
A.29 B.37 C.46 D.44
09、根据使用频率为五个字符设计的哈夫曼编码不可能是 C 。
A.111,110,10,01,00 B.000,001,010,011,1
C.100,11,10,1,0 D.001,000,01,11,10
10、无向图的邻接矩阵是一个 A 矩阵。
A.对称B.零 C.上三角D.对角
11、若用邻接矩阵表示一个有向图,则其中每一列包含的″1″的个数为 A 。
A、图中每个顶点的入度
B、图中每个顶点的出度
C、图中弧的条数
D、图中连通分量的数目
12、一个含n个顶点和e条弧的有向图以邻接矩阵表示法为存储结构,则计算该有向图中某个顶点出度的时间复杂度为 A 。
A.O(n) B.O(e) C.O(n+e) D.O(n2)
13、采用邻接表存储的图的广度优先遍历算法类似于二叉树的 D 。
A.先序遍历B.中序遍历C.后序遍历D.层次遍历
14、带权有向图G用邻接矩阵A存储,则顶点i的入度等于A中 B 。
A.第i行非∞的元素之和 B.第i列非∞的元素之和
C.第i行非∞且非0的元素个数 D.第i列非∞且非0的元素个数
15、在图中求某个源点到其余各顶点的的最短路径的是 A 算法。
A.迪杰斯特拉 B.哈夫曼 C.普里姆 D.KMP算法
二、填空题(共12分。每空2分。)
16、一棵哈夫曼树有21个结点,则其叶子结点的个数11。
17、树的后根遍历序列等同于该树对应的二叉树的中序遍历。
18、连通图的生成树是一个极小的连通子图,它含有图中全部顶点,但只有足以构成一棵树的n-1条边。
19、具有10个顶点的无向图,边的总数最多为 45 。
20、拓扑排序算法是通过重复选择具有 0 个前驱顶点的过程来完成的。
21、Dijkstra算法求某一顶点到其余各顶点间的最短路径是按路径长度递增的次序来得到最短路径的。
三、简答题(共28分)
22、已知遍历二叉树时得到的中序序列为CBGDAEF,后序序列为CGDBFEA,请写出先序序列。(4分)
答案:ABCDGEF
23、若以数据集{5,4,7,2,9}为结点的权值构造huffman树,按要求完成下列任务:(6分)
1) 按课本中huffman算法的求解顺序画出huffman树;
2) 计算带权路径长度WPL;
WPL=(2+4)*3+(5+7+9)*2=18+42=60
24、下图若从顶点a出发按深度优先搜索法进行遍历,则得到的顶点序列是abcde。若从顶点a出发按广
度优先搜索法进行遍历,则得到的顶点序列是abced。(要示按字母顺序进行遍历)(6分)
25、请在右侧画出左图的一棵最小生成树。(6分)
答案:
26、在下面的有向图中,按要求完成任务:(6分)
1) 写出所有可能的拓扑排序序列;
2) 在图中添加什么边之后仅可能有惟一的拓扑序列。
答案:
ABCDE
ABDCE
四、算法填空(每空3分,共18分。)
27、下面算法实现按层次遍历二叉链树,请填空。28、下面算法实现图的深度优先搜索遍历,请填空。
void LevelOrderTraverse(BiTree T)
{ LinkQueue Q; BiTree p;
InitQueue(&Q);
if (T) EnQueue(&Q, T);
while (!QueueEmpty(Q))
{ DeQueue(&Q, &p);
printf("%c",p->data);
if (p->lchild) EnQueue(&Q, p->lchild);
if (/*此处略*/) EnQueue(&Q, p->rchild); } DestroyQueue(&Q);
} Boolean visited[MAX_VERTEX_NUM];
void Dfs(MGraph G, int v)
{ visited[v]=TRUE;
printf("%s",G.vexs[v]);
for(w=FirstAdjVex(G,v); w>=0; w=NextAdjVex(G,v,w)) if(!visited[w]) Dfs(G,w);
}
void DfsTraverse(MGraph G)
{ for (v=0; v visited[v]=FALSE; for(v=0; v if (!visited[v]) Dfs(G,v); } 五、算法设计题(本题12分) 29、编写递归算法,计算二叉树的深度。int BiTreeDepth(BiTree T) { int h1,h2; if (T==NULL) return 0; else { h1=BiTreeDepth(T->lchild); h2=BiTreeDepth(T->rchild); if (h1>h2) return h1+1; else return h2+1; } }