数据结构习题课第8、7、6章(网上的答案有些有问题的)

合集下载

数据结构习题及各章答案

数据结构习题及各章答案

第一章绪论一、填空题1.数据是描述客观事物的数、字符以及所有能输入到计算机且能够被计算机程序加工处理的符号集合。

_________是数据的基本单位;___________是数据的最小单位。

通常被计算机加工处理的数据不是孤立无关的,而是彼此之间存在着某种联系,将这种数据间的联系称为________。

2.数据结构进行形式化定义时,可以从逻辑上认为数据结构DS是_________的集合D和D上_________的集合R所构成的二元组:DS=(D,R)。

3.已知某数据结构的二元组形式表示为:A=(D,R),D={01,02,03,04,05,06,07,08,09},R={r},r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,09>}。

则此数据结构属于_____________结构。

4.一个算法的时间复杂度通常用问题规模大小的函数来表示,当一个算法的时间复杂度与问题规模n大小无关时,则表示为__________;成正比关系时,则表示为___________;成对数关系时,则表示为___________;成平方关系时,则表示为__________。

5.数据结构的逻辑结构包括_____________、树型结构和图型结构三种类型,其中树型结构和图型结构合称为_____________;数据结构的存储结构主要包括____________和____________两种类型。

6.线性结构的特点是:第一个结点_______前驱结点,其余结点有且仅有_______个前驱结点;最后一个结点_______后继结点,其余每个结点有且仅有_______个后继结点。

7.树型结构的特点是:根结点没有________结点,其余每个结点有且仅有________个前驱结点;叶子结点_________后继结点,其余结点可以有_________个后继结点。

数据结构第八章习题及答案教学提纲

数据结构第八章习题及答案教学提纲

数据结构第八章习题及答案习题八查找一、单项选择题1.顺序查找法适合于存储结构为()的线性表。

A.散列存储 B. 顺序存储或链式存储C. 压缩存储D. 索引存储2.若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度ASL为( )。

A. (n-1)/2 B. n/2 C. (n+1)/2 D. n3.适用于折半查找的表的存储方式及元素排列要求为( )A.链接方式存储,元素无序 B.链接方式存储,元素有序C.顺序方式存储,元素无序 D.顺序方式存储,元素有序4.当在一个有序的顺序存储表上查找一个数据时,即可用折半查找,也可用顺序查找,但前者比后者的查找速度( ) A.必定快 B.不一定 C. 在大部分情况下要快 D. 取决于表递增还是递减5.当采用分块查找时,数据的组织方式为 ( )A.数据分成若干块,每块内数据有序B.数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块C. 数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块D. 数据分成若干块,每块(除最后一块外)中数据个数需相同6.二叉树为二叉排序树的充分必要条件是其任一结点的值均大于其左孩子的值、小于其右孩子的值。

这种说法()。

A.正确 B. 错误7. 二叉查找树的查找效率与二叉树的((1) )有关, 在 ((2) )时其查找效率最低。

(1): A. 高度 B. 结点的多少 C. 树型 D. 结点的位置(2): A. 结点太多 B. 完全二叉树 C. 呈单枝树 D. 结点太复杂。

8.如果要求一个线性表既能较快的查找,又能适应动态变化的要求,则可采用( )查找法。

A. 分快查找B. 顺序查找C. 折半查找D. 基于属性9.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是( )。

A.(100,80, 90, 60, 120,110,130) B.(100,120,110,130,80, 60, 90)C.(100,60, 80, 90, 120,110,130)D. (100,80, 60, 90,120,130,110)10.下图所示的4棵二叉树,( )是平衡二叉树。

《数据结构》第八章习题参考答案 (1)

《数据结构》第八章习题参考答案 (1)
邻接表表示时:无向图的任意顶点的度=顶点所对应边结点链表中结点个数;
有向图的任意顶点的度=邻接表中顶点所对应边链表中结点个数+逆邻接表中顶点所对应边链表中结点个数;
4、课本P3928.3题
【解答】
n个顶点的无向连通图至少有n-1条边,n个பைடு நூலகம்点的无向强连通图至少有n(n-1)/2条边;n个顶点的有向连通图至少有n条边,n个顶点的有向强连通图至少有n(n-1)条边。
上面不正确的是(A)。
A.(1),(2),(3) B.(1) C.(1),(3) D.(2),(3)
5、下列说法不正确的是(C)。
A.图的遍历是从给定的源点出发每一个顶点仅被访问一次
B.遍历的基本算法有两种:深度遍历和广度遍历
C.图的深度遍历不适用于有向图
D.图的深度遍历是一个递归过程
三、填空题
1、判断一个无向图是一棵树的条件是_有n个顶点,n-1条边的无向连通图_。
注: 答案并不唯一
2、课本P3928.1题
【解答】
(1)不是强连通图
(2)简单路径如:D->B->C->F
(3)略
(4)邻接表见图,其他略
3、课本P3928.2题
【解答】
(1)邻接矩阵表示:无向图的边数为
矩阵中非零元素的个数/2;有向图的边数为矩阵中非零元素的个数。
邻接表表示时:无向图的边数为邻接表中边结点的个数/2;有向图的边数为邻接表中边结点的个数。
(2)(3)略
12、课本P3958.24题
【解答】
A->B : 10
A->B->D: 15
A->B->D->C : 17
A->B->D->E : 17

数据结构课后习题答案第七章

数据结构课后习题答案第七章

第七章图(参考答案)7.1(1)邻接矩阵中非零元素的个数的一半为无向图的边数;(2)A[i][j]= =0为顶点,I 和j无边,否则j和j有边相通;(3)任一顶点I的度是第I行非0元素的个数。

7.2(1)任一顶点间均有通路,故是强连通;(2)简单路径V4 V3 V1 V2;(3)0 1 ∞ 1∞ 0 1 ∞1 ∞ 0 ∞∞∞ 1 0邻接矩阵邻接表(2)从顶点4开始的DFS序列:V5,V3,V4,V6,V2,V1(3)从顶点4开始的BFS序列:V4,V5,V3,V6,V1,V27.4(1)①adjlisttp g; vtxptr i,j; //全程变量② void dfs(vtxptr x)//从顶点x开始深度优先遍历图g。

在遍历中若发现顶点j,则说明顶点i和j间有路径。

{ visited[x]=1; //置访问标记if (y= =j){ found=1;exit(0);}//有通路,退出else { p=g[x].firstarc;//找x的第一邻接点while (p!=null){ k=p->adjvex;if (!visited[k])dfs(k);p=p->nextarc;//下一邻接点}}③ void connect_DFS (adjlisttp g)//基于图的深度优先遍历策略,本算法判断一邻接表为存储结构的图g种,是否存在顶点i //到顶点j的路径。

设 1<=i ,j<=n,i<>j.{ visited[1..n]=0;found=0;scanf (&i,&j);dfs (i);if (found) printf (” 顶点”,i,”和顶点”,j,”有路径”);else printf (” 顶点”,i,”和顶点”,j,”无路径”);}// void connect_DFS(2)宽度优先遍历全程变量,调用函数与(1)相同,下面仅写宽度优先遍历部分。

数据结构各章习题及答案

数据结构各章习题及答案

数据结构各章习题及答案第一章绪论一、选择题1.组成数据的基本单位是()(A)数据项(B)数据类型(C)数据元素(D)数据变量2.数据结构是研究数据的()以及它们之间的相互关系。

(A)理想结构,物理结构(B)理想结构,抽象结构(C)物理结构,逻辑结构(D)抽象结构,逻辑结构3.在数据结构中,从逻辑上可以把数据结构分成()(A)动态结构和静态结构(B)紧凑结构和非紧凑结构(C)线性结构和非线性结构(D)内部结构和外部结构4.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。

①(A)数据元素(B)计算方法(C)逻辑存储(D)数据映像②(A)结构(B)关系(C)运算(D)算法5.算法分析的目的是()。

(A)找出数据结构的合理性(B)研究算法中的输入和输出的关系(C)分析算法的效率以求改进(D)分析算法的易懂性和文档性6.计算机算法指的是(①),它必须具备输入、输出和(②)等5个特性。

① (A)计算方法(B)排序方法(C)解决问题的有限运算序列(D)调度方法②(A)可执行性、可移植性和可扩充性(B)可行性、确定性和有穷性(C)确定性、有穷性和稳定性(D)易读性、稳定性和安全性二、判断题1.数据的机内表示称为数据的存储结构。

()2.算法就是程序。

()3.数据元素是数据的最小单位。

()4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。

()5.算法的时间复杂度取决于问题的规模和待处理数据的初态。

()三、填空题1.数据逻辑结构包括________、________、_________ 和_________四种类型,其中树形结构和图形结构合称为_____。

2.在线性结构中,第一个结点____前驱结点,其余每个结点有且只有______个前驱结点;最后一个结点______后续结点,其余每个结点有且只有_______个后续结点。

3.在树形结构中,树根结点没有_______结点,其余每个结点有且只有_______个前驱结点;叶子结点没有________结点,其余每个结点的后续结点可以_________。

数据结构第七章的习题答案

数据结构第七章的习题答案

数据结构第七章的习题答案数据结构第七章的习题答案数据结构是计算机科学中非常重要的一门学科,它研究如何组织和管理数据以便高效地访问和操作。

第七章是数据结构课程中的一个关键章节,它涵盖了树和二叉树这两个重要的数据结构。

本文将为读者提供第七章习题的详细解答,帮助读者更好地理解和掌握这些概念。

1. 问题:给定一个二叉树,如何判断它是否是二叉搜索树?解答:要判断一个二叉树是否是二叉搜索树,我们可以使用中序遍历的方法。

中序遍历会按照从小到大的顺序访问二叉树中的节点。

所以,如果一个二叉树是二叉搜索树,那么它的中序遍历结果应该是一个有序的序列。

具体实现时,我们可以使用递归或者迭代的方式进行中序遍历,并将遍历的结果保存在一个数组中。

然后,我们检查这个数组是否是有序的即可判断二叉树是否是二叉搜索树。

2. 问题:给定一个二叉树,如何找到它的最大深度?解答:要找到一个二叉树的最大深度,我们可以使用递归的方式。

对于每个节点,它的最大深度等于其左子树和右子树中的最大深度加1。

递归的终止条件是节点为空,此时深度为0。

具体实现时,我们可以定义一个递归函数,该函数接收一个节点作为参数,并返回以该节点为根节点的子树的最大深度。

在递归函数中,我们先判断节点是否为空,如果为空则返回0;否则,我们分别计算左子树和右子树的最大深度,然后取两者中的较大值加1作为当前节点的最大深度。

3. 问题:给定一个二叉树,如何判断它是否是平衡二叉树?解答:要判断一个二叉树是否是平衡二叉树,我们可以使用递归的方式。

对于每个节点,我们分别计算其左子树和右子树的高度差,如果高度差大于1,则该二叉树不是平衡二叉树。

具体实现时,我们可以定义一个递归函数,该函数接收一个节点作为参数,并返回以该节点为根节点的子树的高度。

在递归函数中,我们先判断节点是否为空,如果为空则返回0;否则,我们分别计算左子树和右子树的高度,然后取两者中的较大值加1作为当前节点的高度。

最后,我们判断左子树和右子树的高度差是否大于1,如果大于1,则该二叉树不是平衡二叉树。

数据结构第七章习题答案

第七章图
1.下面是一个图的邻接表结构,画出此图,并根据此存储结构和深度优先搜索
算法写出从C开始的深度优先搜索序列。

0A13^
1B35^
2C30^
3D4^
4E^
5F4^
【解答】
A B F
C D E
C开始的深度优先搜索序列:CDEABF(唯一的结果)
2.假定要在某县所辖六个镇(含县城)之间修公路,若镇I和镇J之间有可能通
过道路连接,则Wij表示这条路的长度。

要求每个镇都通公路且所修公路总里程
最短,那么应选择哪些线路来修。

I11112233445 J23564546566 W ij1239102626474
(1).画出该图。

(2).用C语言描述该图的数组表示法存储结构,并注明你所使用变量的实际含义。

(3).图示你所定义的数据结构。

(4).标识出你选择的线路。

【解答】
(1)
(2)
#define MAX 6
char vexs[MAX];
出该图的所有强连通分量。

(2).在图中删除弧<2,1>,然后写出从顶点1开始的拓扑有序序列。

【解答】
(1) 共4个强连通分量:
(2) 1,3,2,6,5,4
5 4
6 1 3 2
4
15 10
2
15 20 30 4 10
10。

数据结构(C++版)课后作业6-8章附答案

数据结构(C++版)课后作业6-8章附答案第6 章图课后习题讲解1. 填空题⑴设⽆向图G中顶点数为n,则图G⾄少有()条边,⾄多有()条边;若G为有向图,则⾄少有()条边,⾄多有()条边。

【解答】0,n(n-1)/2,0,n(n-1) 【分析】图的顶点集合是有穷⾮空的,⽽边集可以是空集;边数达到最多的图称为完全图,在完全图中,任意两个顶点之间都存在边。

⑵任何连通图的连通分量只有⼀个,即是()。

【解答】其⾃⾝⑶图的存储结构主要有两种,分别是()和()。

【解答】邻接矩阵,邻接表⑸已知⼀个有向图的邻接矩阵表⽰,计算第j个顶点的⼊度的⽅法是()。

【解答】求第j列的所有元素之和⑹有向图G⽤邻接矩阵A[n][n]存储,其第i⾏的所有元素之和等于顶点i的()。

【解答】出度⑺图的深度优先遍历类似于树的()遍历,它所⽤到的数据结构是();图的⼴度优先遍历类似于树的()遍历,它所⽤到的数据结构是()。

【解答】前序,栈,层序,队列(8)如果⼀个有向图不存在(),则该图的全部顶点可以排列成⼀个拓扑序列。

【解答】回路2. 选择题⑵n个顶点的强连通图⾄少有()条边,其形状是()。

A n B n+1 C n-1 D n×(n-1) E ⽆回路 F 有回路G 环状H 树状【解答】A,G⑶含n 个顶点的连通图中的任意⼀条简单路径,其长度不可能超过()。

A 1 B n/2 C n-1 D n【解答】C 【分析】若超过n-1,则路径中必存在重复的顶点。

(4)最⼩⽣成树指的是()。

A 由连通⽹所得到的边数最少的⽣成树 B 由连通⽹所得到的顶点数相对较少的⽣成树 C 连通⽹中所有⽣成树中权值之和为最⼩的⽣成树 D 连通⽹的极⼩连通⼦图【解答】C(5)下⾯关于⼯程计划的AOE⽹的叙述中,不正确的是()A 关键活动不按期完成就会影响整个⼯程的完成时间B 任何⼀个关键活动提前完成,那么整个⼯程将会提前完成C 所有的关键活动都提前完成,那么整个⼯程将会提前完成D 某些关键活动若提前完成,那么整个⼯程将会提前完【解答】B 【分析】AOE⽹中的关键路径可能不⽌⼀条,如果某⼀个关键活动提前完成,还不能提前整个⼯程,⽽必须同时提⾼在⼏条关键路径上的关键活动。

数据结构习题参考答案

数据结构习题参考答案第一章答案一、填空题1.数据元素,数据项2. O(1),O(n),O(log 2n),O(n 2)3.线性结构,非线性结构,顺序结构,链式结构4.无,一,无,一5.前驱,一,无,任意6.任意7. O(n 1/2)8.O(1)<o(2n<="") 第二章答案一、填空题1. n/2,(n-1)/2分析:当在顺序线性表中的第i (1<=i<=n+1)个位置之前插入一个新元素时,从第i 个元素起向后的n+1-i 个元素均要向后移动一个位置。

因此在等概率情况下,插入操作中元素的平均移动次数为∑+==-++=112)1(11)(n i ni n n n f ;当在顺序线性表中删除第i (1<=i<=n )个位置上的元素,从第i+1个元素起向后的n-i 个元素均要向前移动一个位置。

因此在等概率情况下,删除操作中元素的平均移动次数为∑=-=-= n i n i n n n f 121)(1)(。

2.向后3.向前4.指针域5.一定,不一定6. O(n)7. O(n)8.消除空表的特殊性,统一表示和处理空表和非空表的情形,从而简化插入和删除等操作的某些细节。

9.前驱,后继10.O(n)二、填空题1. (1)2. (1)3. (4)4. (2)5. (2)6. (4)7. (4)8. (1)9. (4)10.(1)11.(2)12.(3)第三章参考答案一、填空题1.线性,任何,栈顶,队尾,队头2.先进后出(FILO ),队尾,队头,先进先出(FIFO )3. top==0,top==m4. 235415.前一个位置,所在位置,m-1分析:在顺序循环队列中约定头指针front 和尾指针rear 所指向的位置,是牺牲掉一个存储单元而方便表示队列空和队列满的条件,因此顺序循环队列中实际可用的存储单元只有m-1个。

6. (rear+1)%m==front ,rear==front7. O(1)8.返回地址,返回地址二、选择题1.(3) 2.(3) 3.(3) 4. (2)5. (2)6. (3)7. (1)8. (4)因为:顺序循环队列中的元素个数=??<+-≥-front rear m front rear front rear front rear ,整理合并可写成(rear-front+m)%m 。

(完整版) 《数据结构》教材课后习题+答案

第1章绪论习题1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。

3.简述逻辑结构的四种基本关系并画出它们的关系图。

4.存储结构由哪两种基本的存储方法实现?5.选择题(1)在数据结构中,从逻辑上可以把数据结构分成()。

A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。

A.存储结构B.存储实现C.逻辑结构D.运算实现(3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。

A.数据具有同一特点B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致C.每个数据元素都一样D.数据元素所包含的数据项的个数要相等(4)以下说法正确的是()。

A.数据元素是数据的最小单位B.数据项是数据的基本单位C.数据结构是带有结构的各数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构(5)以下与数据的存储结构无关的术语是()。

A.顺序队列 B. 链表 C. 有序表 D. 链栈(6)以下数据结构中,()是非线性数据结构A.树B.字符串C.队D.栈6.试分析下面各程序段的时间复杂度。

(1)x=90; y=100;while(y>0)if(x>100){x=x-10;y--;}else x++;(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;(3)s=0;for i=0; i<n; i++)for(j=0; j<n; j++)s+=B[i][j];sum=s;(4)i=1;while(i<=n)i=i*3;(5)x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(6)x=n; //n>1y=0;while(x≥(y+1)* (y+1))y++;(1)O(1)(2)O(m*n)(3)O(n2)(4)O(log3n)(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2)(6)O(n)第2章线性表1.选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第8章图8.2对于如图8.33所示的无向图,试给出:(1)图中每个顶点的度;(2)该图的邻接矩阵;(3)该图的邻接表;(4)该图的连通分量。

(1)D(V0)=2;D(V1)=2;D(V2)=3;D(V3)=3;D(V4)=2;D(V5)=1;D(V6)=1.0101000010100010100001010000010110001011001010100(2)1010100邻接矩阵001100000110000000001000000100000100000010vV(3)邻接表(4)连通分量1:2:8.3图8.35所示的是某个无向图的邻接表,试:(1)画出此图;(2)写出从顶点A开始的DFS遍历结果;(3)写出从顶点A开始的BFS遍历结果。

(1)图8.35邻接表对应的无向图如图8.35.1所示(2)从顶点A 开始的D F S 遍历,深度优先遍历的基本思想:定的图G=(V,E ),首先将V 中每一个顶点都标记为未被访问,然后,选取一个源点vV 将v 标记为被访问,再递归地用深度优方法,依v 的所有邻接点 w .若w 未曾访问过w 为新的出发点继续深度优遍历,如果从v 出发 所有路的顶点都已被访问过,则结束。

A ,B ,C ,F ,E ,G ,D 从顶点A 开始的B F S 遍历,基本思想:定的图G=(V,E ),从图中某未访 问过的顶点vi 出发: 1)访问顶点vi ; 2)访问vi 的所有未被访问的邻接点w1,w2,⋯wk ; 3)依次从这些邻接点出发,访问它们的所有未被访问的邻接点;依此类推,直 到图中所有访问过的顶点的邻接点都被访问; A ,B ,C ,D ,F ,E ,G 8.4对如图8.36所示的连通图,分别用P rim 和Kruskal 算法构造其最小生成 树。

解:(1)Prime 算法的基本思路、步骤P167 Prim 算法的基本步骤如下:(1)初始化:U={u0},TREE={};(2)如果U=V (G ),则输出最小生成树T ,并结束算法;(3)在所有两栖边中找一条权最小的边(u ,v )(若候选两栖边中的最小边不止 一条,可任选其中的一条),将边(u ,v )加入到边集TREE 中,并将顶点v 并入 集合U 中。

(4)由于新顶点的加入,U 的状态发生变化,需要对U 与V-U 之间的两栖边进 行调整。

(5)转步骤(2)Prim算法构造最小生成树过程:(2)采用Kruskal算法求解最小生成树时首先要对边进行由小到大进行排序,本题对边进行排序的结果是:(D,F)1、(C,F)2、(A,F)3、(A,C)4、(F,G)4、(D,E)4、(D,B)4、(C,D)5、(E,G)5、(A,D)6、(D,G)6、(A,B)7。

根据Kruskal算法,构造最小生成树的过程如图8.5对于如图8.37所示的有向网,用Dijkstra方法求从顶点A到图中其他顶点的最短路径,并写出执行算法过程中距离向量d与路径向量p的状态变化情况。

解:Dijkstra算法的基本思想:把图中所有顶点分成两组,第一组包括已确定最短路径的顶点,初始时只含有一个源点,记为集合S;第二组包括尚未确定最短路径的顶点,记为V-S。

按最短路径长度递增的顺序逐个把V-S中的顶点加到S中去,直至从v0出发可以到达的所有顶点都包括到S中。

在这个过程中,总保持从v0到第一组(S)各顶点的最短路径都不大于从v0到第二组(V-S)的任何顶点的最短路径长度,第二组的顶点对应的距离值是从v0到此顶点的只包括第一组(S)的顶点为中间顶点的最短路径长度。

对于S中任意一点j,v0到j的路径长度皆小于v0到(V-S)中任意一点的路径长度。

(后面四行需要在集合S加上E)从表中可以看出源点A到其它各顶点的最短距离及路径为:A→B:48路径:A→BA→C:57路径:A→D→F→CA→D:15路径:A→DA→E:28路径:A→EA→F:48路径:A→D→FA→G:38路径:A→D→G8.6试写出如图8.38所示的AOV网的4个不同的拓扑序列。

(这里也有点问题,等待老师再次讲解)解:拓扑排序过程:1)输入AOV网络。

令n为顶点个数。

2)在AOV网络中选一个没有直接前驱(入度为0)的顶点,并输出之;3)从图中删去该顶点,同时删去所有它发出的有向边;4)重复以上(2)、(3)步,直到全部顶点均已输出,拓扑有序序列形成,拓扑排序完成;图8.38所示的AOV网的4个不同的拓扑序列为:(1)ABDCEFGIH(2)ABDECFGIH(3)DABCEFGIH(4)DAECBFGIH8.7计算如图8.39所示的AOE网中各顶点所表示的事件的发生时间ve(j),vl(j),各边所表示的活动的开始时间e(i),l(i),并找出其关键路径。

解:(1):e(i):表示活动ai的最早开始时间。

l(i):表示活动最迟开始时间的向量。

关键活动特征:e(i)=l(i)l(j)-e(j)的值表示完成活动aj的时间余量,提前完成非关键活动并不能提高整个工程的进度。

事件可能的最早开始时间ve(i):对于某一事件vi,它可能的最早发生时间事件允许的最晚发生时间vl(i):对于某一事件vi,它允许的最晚发生时间是在保证按时完成整个工程的前提下,该事件最晚必须发生的时间可以得出:第7章二叉树8.8选择题。

(1)前序遍历和中序遍历结果相同的二叉树为(F);前序遍历和后序遍历结果相同的二叉树为(B)。

A.一般二叉树B.只有根结点的二叉树C.根结点无左孩子的二叉树D.根结点无右孩子的二叉树E.所有结点只有左子树的二叉树F.所有结点只有右子树的二叉树。

(2)以下有关二叉树的说法正确的是(B)。

A.二叉树的度为2B.一棵二叉树的度可以小于2C.二叉树中至少有一个结点的度为2D.二叉树中任一个结点的度均为2(3)一棵完全二叉树上有1001个结点,其中叶子结点的个数为(D)。

A.250B.500C.254D.501注:1023为深度是10的满二叉树,有512个叶子结点,1001比1023少22个节点。

所以有512-22+22/2=501片叶子(4)一棵完全二叉树有999个结点,它的深度为(B)。

A.9B.10C.11D.12(5)一棵具有5层的满二叉树所包含的结点个数为(B)。

A.15B.31C.63D.328.9用一维数组存放完全二叉树:ABCDEFGH,I则后序遍历该二叉树的结点序列8.10为(HIDEBFGCA)。

8.11已知一棵二叉树的中序遍历的结果为ABCEFGHD,后序遍历的结果为ABFHGED,C试画出此二叉树。

解:8.12已知一棵二叉树的前序遍历的结果为ABCDE,F中序遍历的结果为CBAED,F 试画出此二叉树解:7.14试编写一个函数,将一棵给定二叉树中所有结点的左、右子女互换。

解:#include"bintree.h"voidchange(bintreet){bintreep;if(t){p=t->lchild;t->lchild=t->rchild;t->rchild=p;change(t->lchild);change(t->rchild);}}intmain(){bintreet;creat(&t);/*建立二叉树t的存储结构*/preorder(t);change(t);printf("\n");preorder(t);}8.13假设二叉树采用链式方式存储,root为其根结点,p指向二叉树中的任意一个结点,编写一个求从根结点到p所指结点之间路径长度的函数。

解:在后序遍历非递归算法中,当访问的结点为p时,其祖先点正好全部在栈中,此时栈中结点的个数就是根结点到p所指结点之间路径长度。

#include<stdio.h>#include<stdlib.h>typedefchardatatype; typedefstructnode/*二叉树结点定义*/{datatypedata;structnode*lchild,*rchild;}bintnode;typedefbintnode*bintree;typedefstructstack{bintreedata[100];inttag[100];inttop;}seqstack;voidcreat(bintree*t);/*函数Depth,功能:求根结点到x的路径长度*/intDepth(bintreet,datatypex){seqstacks;inti=0,j;s.top=0;while(t||s.top!=0){while(t){s.data[s.top]=t;s.tag[s.top]=0;s.top++;t=t->lchild;}while(s.top>0&&s.tag[s.top-1]){s.top--;t=s.data[s.top];if(t->data==x)returns.top;//此时栈中的结点都是x的祖先结点}if(s.top>0){t=s.data[s.top-1];s.tag[s.top-1]=1;t=t->rchild;}elset=NULL;}}第6章树8.14树最适合用来表示具有(有序)性和(层次)性的数据。

8.15在选择存储结构时,既要考虑数据值本身的存储,还需要考虑(数据间关系)的存储。

8.16对于一棵具有n个结点的树,该树中所有结点的度数之和为(n-1)。

8.17已知一棵树如图6.11所示,试回答以下问题:(1)树中哪个结点为根结点?哪些结点为叶子结点?答:A是根结点;E,G,H,I,C,J,K,L为叶结点。

(2)结点B的双亲为哪个结点?其子女为哪些结点?答:B的双亲结点是A,其子女结点为E和F。

(3)哪些结点为结点I的祖先?哪些结点为结点B的子孙?答:F,B,A是结点I的祖先结点;E,F,G,H,I是B的子孙结点。

(4)哪些结点为结点D的兄弟?哪些结点为结点K的兄弟?答:B,C,L是结点D的兄弟结点,J是结点K的兄弟结点。

(5)结点J的层次为多少?树的高度为多少?答:结点J的层次为3,树的高度为4。

(6)结点A、C的度分别为多少?树的度为多少?答:结点A的度为4,结点C的度是0,树的度是4。

(7)以结点B为根的子树的高度为多少?答:以结点B为根的子树的高度是3。

(8)试给出该树的括号表示及层号表示形式。

答:该树的括号表示为:A(B(E,F(G,H,I)),C,D(J,K),L),该树的层号表示为:10A,20B,30E,30F,40G,40H,40I,20C,20D,25J,25K,20L 8.18试写出图6.11所示树的前序遍历、后序遍历和层次遍历的结果。

相关文档
最新文档