数据结构第2阶段测试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
江南大学现代远程教育第二阶段测试卷
考试科目:《数据结构》第五章至第七章(总分100分)时间:90分钟______________学习中心(教学点)批次:层次:
专业:学号:号:
:得分:
一、选择题(每题3分,共30分)
1、将一个A[1..100,1..100]的三对角矩阵,按行优先存入一维数组B[1..298]中,则A中的元素A[66,65]在数组B中的位置K=()。
A、195 B、196 C、197 D、198
2、广义表(a,(b,(),c))的深度为()。
A、1 B、2 C、3 D、4
3、下列叙述中错误的是()。
A、树的度与该树中结点的度的最大值相等
B、二叉树就是度为2的有序树
C、有5个叶子结点的二叉树中必有4个度为2的结点
D、满二叉树一定是完全二叉树
4、一棵二叉树中第6层上最多有()个结点。
A、2B、31C、32D、64
5、由树转换而得的二叉树,根结点()。
A、没有左子树B、没有右子树C、左右子树都有D、视树的形态而定
6、一棵高为k的二叉树最少有()个结点。
A、k-1 B、k C、k+1 D、2k-1 E、2k-1
7、含n个顶点的有向图最多有()条弧。
A、n B、n(n-1) C、n(n+1) D、n2
8、设对下图从顶点a出发进行深度优先遍历,则()是可能得到的遍历序列。
A、acfgdeb B、abcdefg C、acdgbef D、abefgcd
9、设图G的邻接矩阵A=
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
1
1
1
1
,则图G中共有()个顶点。
A、1 B、3 C、4 D、9
10、具有n个顶点的有向强连通图最少有()条弧。
A、n-1 B、n C、n(n-1) D、n(n-1)/2
二、(10分)
试将下图中的树转化为二叉树。
三、(10分)
试写出对如下无向图从顶点A出发进行广度优先遍历可能得到的所有遍历序列。
四、(15分)
设有向网如下,试用迪杰斯特拉算法求从顶点A出发到其余各顶点的最短路径。
五、(15分)
一棵深度为H的满k叉树有如下性质:第H层上的结点都是叶子结点,其余各层上每个结点都有k棵非空子树。若按层次顺序从1开始对全部结点编号,则:
⑴第i层上有多少个结点?
⑵编号为p的结点的第i个孩子结点(若存在)的编号是多少?
⑶编号为p的结点的双亲结点(若存在)的编号是多少?
六、(20分)
试设计算法,对以邻接矩阵存储的无向图进行深度优先遍历。
答案
一、选择题
1、A
2、C
3、B
4、C
5、B
6、B
7、B
8、A
9、B
10、B
二、试将下图中的树转化为二叉树。
答:
三、试写出对如下无向图从顶点A出发进行广度优先遍历可能得到的所有遍历序列。
答:
ABCEGHFD
ABCEHGFD
ACBGHEDF
ACBHGEDF
四、设有向网如下,试用迪杰斯特拉算法求从顶点A出发到其余各顶点的最短路径。
答:
A / / / 0 /
B ∞∞10 ACDB 1 8 ACDEB
C 2 AC / AC / AC 2 / AC
D 7 AD 5 ACD / ACD 3 / ACD
E ∞∞ 6 ACDE 4 / ACDE
F ∞ 6 ACF 6 ACF 5 6 ACF
G ∞∞13 ACDG 6 13 ACDG
D PATH D PATH D PATH
五、一棵深度为H的满k叉树有如下性质:第H层上的结点都是叶子结点,其余各层上每个结点
都有k棵非空子树。若按层次顺序从1开始对全部结点编号,则: ⑴第i层上有多少个结点?
⑵编号为p的结点的第i个孩子结点(若存在)的编号是多少? ⑶编号为p的结点的双亲结点(若存在)的编号是多少?
答:
⑴第1层有1个结点,第i 层结点数=第i-1层结点数*k (2≤i ≤H )=1
-i k
个
⑵当根结点以及前面的p-1个结点的孩子都编了号之后,才开始为结点p 的孩子编号。结点p 的第i 个孩子的编号为(1+(p-1)*k)+i。
⑶若p=1,则为根结点,无双亲,否则可设双亲结点编号为s,由⑵可知结点s的孩子结点的编号围为(s-1)*k+2~(s-1)*k+k+1,即
k
k p s k p 2
1-+≤
≤-,又由s为整数,可得⎥⎦
⎥
⎢⎣⎢-+=k k p s 2。
六、试设计算法,对以邻接矩阵存储的无向图进行深度优先遍历。
答:
int depth(BiTree t){ if (!t) return 0; if(t->lchild)//有左子树
if (t->rchild){ //左、右子树均有 hl=depth(t->lchild); //求左子树高度 hr=depth(t->rchild); //求右子树高度 return hl>hr?hl+1:hr+1; }
else //只有左子树