【HBU】2020树结构和图结构月测(选择题)

2-1
我们用一个有向图来表示航空公司所有航班的航线。下列哪种算法最适合解决找给定两城市间最经济的飞行路线问题?

(2分)

A.深度优先搜索

B.Kruskal算法

C.拓扑排序算法

D.Dijkstra算法

D
A图的遍历算法;B构造最小生成树;C拓补排序

2-2
下图为一个AOV网,其可能的拓扑有序序列为:
在这里插入图片描述

A.ABCEDF

B.ACBDEF

C.ABCDFE

D.ABCEFD

A
拓扑排序只输出没有入度的点,输出后删除点,从删除A开始。B选项,DE出错;C选项,DE出错;D选项FD出错

2-3
任何一个带权无向连通图的最小生成树——

A.有可能不唯一

B.有可能不存在

C.是唯一的

D.是不唯一的

A
权值相同的路径不一定唯一

2-4
先序遍历图示二叉树的结果为

(2分)

A.A,B,D,H,I,E,C,F,G

B.H,I,D,B,E,F,G,A,C

C.H,D,I,B,E,A,F,C,G

D.A,B,C,D,H,E,I,F,G

A

2-5
设树T的度为4,其中度为1、2、3、4的结点个数分别为4、2、1、1。则T中有多少个叶子结点?

A.6

B.8

C.10

D.4

B
树的入度之和为n0+n1+n2

2-6
在AOE网中,什么是关键路径?

A.最短回路

B.最长回路

C.从第一个事件到最后一个事件的最短路径

D.从第一个事件到最后一个事件的最长路径

D

2-7
给定有向图的邻接矩阵如下:

在这里插入图片描述

顶点2(编号从0开始)的出度和入度分别是:

A.0, 2

B.2, 0

C.1, 3

D.3, 1

A
横为出度,纵为入度。不要弄反了

2-8
设一段文本中包含4个对象{a,b,c,d},其出现次数相应为{4,2,5,1},则该段文本的哈夫曼编码比采用等长方式的编码节省了多少位数?

A.0

B.5

C.4

D.2

D
不要忘了乘以次数在这里插入图片描述

2-9
树最适合于用来表示

A.元素之间无联系的数据

B.有序数据元素

C.元素之间具有分支层次关系的数据

D.无序数据元素

C

2-10
若一棵二叉树的后序遍历序列是{ 1, 3, 2, 6, 5, 7, 4 },中序遍历序列是{ 1, 2, 3, 4, 5, 6, 7 },则下列哪句是错的?

A.2是1和3的父结点

B.7是5的父结点

C.这是一棵完全二叉树

D.这是一棵二叉搜索树

C

#define MAXVEX 30 #define MAXCOST 1000 void prim(int c[MAXVEX][MAXVEX],int n) /*己知图的顶点为{1,2,...,n},c[i][j]c[j][i]为边(i,j)的权,打印小生成树 的每条边*/ { int i,j,k,min,lowcost[MAXVEX],closest[MAXVEX];; for (i=2;i<=n;i++) /*从顶点1开始*/ { lowcost[i]=c[1][i]; closest[i]=1; } closest[1]=0; for (i=2;i<=n;i++) /*从U之外求离U中某一顶点近的顶点*/ { min=MAXCOST; j=1;k=i; while (j<=n) { if (lowcost[j]<min && closest[j]!=0) { min=lowcost[j]; k=j; } j++; } printf("(%d,%d) ",closest[k],k); /*打印边*/ closest[k]=0; /*k加入到U中*/ for (j=2;j<=n;j++) if (closest[j]!=0 && c[k][j]<lowcost[j]) { lowcost[j]=c[k][j]; closest[j]=k; } } } main() { int n=7,i,j,mx[MAXVEX][MAXVEX]; for (i=0;i<=n;i++) for (j=0;j0) i=set[i]; return(i); } kruskal(edgeset ge,int n,int e) /*ge表示的图是按权值从小到大排列的*/ { int set[MAXEDGE],v1,v2,i,j; for (i=1;i<=n;i++) set[i]=0; /*给set中的每个元素赋初值*/ i=1; /*i表示待获取的生成树中的边数,初值为1*/ j=1; /*j表示ge中的下标,初值为1*/ while (j<n && i<=e) /*按边权递增顺序,逐边检查该边是否应加入到生成树中*/ { v1=seeks(set,ge[i].bv); /*确定顶点v所在的连通集*/ v2=seeks(set,ge[i].tv); if (v1!=v2) /*当v1,v2不在同一顶点集合,确定该边应当选入生成树*/ { printf("(%d,%d) ",ge[i].bv,ge[i].tv); set[v1]=v2; j++; } i++; } } main() { int n=7,e=10; edgeset mx; mx[1].bv=4;mx[1].tv=6;mx[1].w=30; mx[2].bv=2;mx[2].tv=5;mx[2].w=40; mx[3].bv=4;mx[3].tv=7;mx[3].w=42; mx[4].bv=3;mx[4].tv=7;mx[4].w=45; mx[5].bv=1;mx[5].tv=2;mx[5].w=50; mx[6].bv=4;mx[6].tv=5;mx[6].w=50; mx[7].bv=3;mx[7].tv=4;mx[7].w=52; mx[8].bv=1;mx[8].tv=3;mx[8].w=60; mx[9].bv=2;mx[9].tv=4;mx[9].w=65; mx[10].bv=5;mx[10].tv=6;mx[10].w=70; printf("小生成树边集:\n "); kruskal(mx,n,e); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值