第610章树和二叉树标准答案.docx

上传人:b****2 文档编号:12909554 上传时间:2023-04-22 格式:DOCX 页数:34 大小:200.55KB
下载 相关 举报
第610章树和二叉树标准答案.docx_第1页
第1页 / 共34页
第610章树和二叉树标准答案.docx_第2页
第2页 / 共34页
第610章树和二叉树标准答案.docx_第3页
第3页 / 共34页
第610章树和二叉树标准答案.docx_第4页
第4页 / 共34页
第610章树和二叉树标准答案.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

第610章树和二叉树标准答案.docx

《第610章树和二叉树标准答案.docx》由会员分享,可在线阅读,更多相关《第610章树和二叉树标准答案.docx(34页珍藏版)》请在冰豆网上搜索。

第610章树和二叉树标准答案.docx

第610章树和二叉树标准答案

第6章树和二叉树

一、基础知识题

1.列出右图所示二叉树的叶结点、分支结点和每个结点的层次。

[解答]二叉树的叶结点有⑥、⑧、⑨。

分支结点有①、

②、③、④、⑤、⑦。

结点①的层次为0;结点②、

③的层次为1;结点④、⑤、⑥的层次为2;结点⑦、

⑧的层次为3;结点⑨的层次为4。

2.使用

(1)顺序表示和

(2)二叉链表表示法,分别画出右图所示二叉树的存储表示。

[解答]

(1)顺序表示

0

1

2

3

4

5

6

7

8

9

1

16

17

(2)二叉链表表示

3.在结点个数为n(n>1)的各棵树中,高度最小的树的高度是多少?

它有多少个叶结点?

多少个分支结点?

高度最大的树的高度是多少?

它有多少个叶结点?

多少个分支结点?

[解答]

结点个数为n时,高度最小的树的高度为1,有2层;它有n-1个叶结点,1个分支结点;高度最大的树的高度为n-1,有n层;它有1个叶结点,n-1个分支结点。

4.试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。

[解答]

具有3个结点的树具有3个结点的二叉树

5.如果一棵树有n1个度为1的结点,有n2个度为2的结点,…,nm个度为m的结点,试问有多少个度为0的结点?

试推导之。

[解答]

总结点数n=n0+n1+n2+…+nm

总分支数e=n-1=n0+n1+n2+…+nm-1

=m×nm+(m-1)×nm-1+…+2×n2+n1

则有n0=

6.试分别找出满足以下条件的所有二叉树:

(1)二叉树的前序序列与中序序列相同;

(2)二叉树的中序序列与后序序列相同;

(3)二叉树的前序序列与后序序列相同。

[解答]

(1)二叉树的前序序列与中序序列相同:

空树或缺左子树的单支树;

(2)二叉树的中序序列与后序序列相同:

空树或缺右子树的单支树;

(3)二叉树的前序序列与后序序列相同:

空树或只有根结点的二叉树。

7.填空题

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

(2)假定一棵三叉树的结点个数为50,则它的最小高度为4,最大高度为49。

(3)一棵高度为h的四叉树中,最多含有(4h+1-1)/3结点。

(4)在一棵三叉树中,度为3的结点数有2个,度为2的结点数有1个,度为1的结点数为2个,那么度为0的结点数有6个。

(5)一棵高度为5的满二叉树中的结点数为63个,一棵高度为3的满四叉树中的结点数为85个。

(6)在一棵二叉树中,假定度为2的结点有5个,度为1的结点有6个,则叶子结点数有6个。

(7)对于一棵含有40个结点的理想平衡树,它的高度为5。

(8)若对一棵二叉树从0开始进行结点编号,并按此编号把它顺序存储到一堆数组a中,即编号为0的结点存储到a[0]中,其余类推,则a[i]元素的左子女结点为2×i+1,右子女结点为2×i+2,双亲结点(i≥1)为

9.n个结点可构造出多少种不同形态的二叉树?

若有3个数据1,2,3,输入它们构造出来的中序遍历结果都为1,2,3的不同二叉树有哪些?

[解答]

/(n+1)种。

当n=3时,中序遍历都为1,2,3的不同二叉树有5种:

10、判断下列叙述的对错。

如果正确,在题前打“√”,否则打“×”。

(1)二叉树是树的特殊情形;

(2)若有一个结点是二叉树中某个子树的中序遍历结果序列的最后一个结点,则它一定是该子树的前序遍历结果序列的最后一个结点;

(3)若有一个结点是二叉树中某个子树的前序遍历结果序列的最后一个结点,则它一定是该子树的中序遍历结果序列的最后一个结点;

(4)若有一个叶子结点是二叉树中某个子树的中序遍历结果序列的最后一个结点,则它一定是该子树的前序遍历结果序列的最后一个结点;

(5)若有一个叶子结点是二叉树中某个子树的前序遍历结果序列的最后一个结点,则它一定是该子树的中序遍历结果序列的最后一个结点。

[解答]

(1)√

(2)×(3)×(4)√(5)×

二、算法设计题

1.若已知两棵二叉树B1和B2皆为空,或者皆不空且B1的左、右子树和B2的左、右子树分别相似,则称二叉树B1和B2相似。

试编写算法,判别给定两棵二叉树是否相似。

[解答]

intBitree_Sim(BitreeB1,BitreeB2)//判断两棵树是否相似的递归算法

{

  if(!

B1&&!

B2)return1;

  elseif(B1&&B2&&Bitree_Sim(B1->lchild,B2->lchild)&&Bitree_Sim(B1->rchild,B2->rchild))

    return1;

  elsereturn0;

}//Bitree_Sim

2.试利用栈的基本操作写出先序遍历的非递归形式的算法。

[解答]

voidPreOrder_Nonrecursive(BitreeT)//先序遍历二叉树的非递归算法

{

  InitStack(S);

  Push(S,T);//根指针进栈

  while(!

StackEmpty(S))

  {

    while(Gettop(S,p)&&p)

    {

      visit(p->data);

      push(S,p->lchild);

    }//向左走到尽头

    pop(S,p);

    if(!

StackEmpty(S))

    {

    pop(S,p);

    push(S,p->rchild);//向右一步

    }

  }//while

}//PreOrder_Nonrecursive

3.编写递归算法,计算二叉树中叶子结点的数目。

[解答]

intLeafCount_BiTree(BitreeT)//求二叉树中叶子结点的数目

{

  if(!

T)return0;//空树没有叶子

  elseif(!

T->lchild&&!

T->rchild)return1;//叶子结点

  elsereturnLeaf_Count(T->lchild)+Leaf_Count(T->rchild);//左子树的叶子数加上右子树的叶子数

}//LeafCount_BiTree

4.编写按层次顺序(同一层自左至右)遍历二叉树的算法。

[解答]

voidLayerOrder(BitreeT)//层序遍历二叉树

{

  InitQueue(Q);//建立工作队列

  EnQueue(Q,T);

  while(!

QueueEmpty(Q))

  {

    DeQueue(Q,p);

    visit(p);

    if(p->lchild)EnQueue(Q,p->lchild);

    if(p->rchild)EnQueue(Q,p->rchild);

  }

}//LayerOrder

第七章图

一、基础知识题

1.画出1个顶点、2个顶点、3个顶点、4个顶点和5个顶点的无向完全图。

并证明在n个顶点的无向完全图中,边的条数为n(n-1)/2。

[解答]

 

[证明]

在有n个顶点的无向完全图中,每一个顶点都有一条边与其他某一顶点相连,所以每一个顶点有n-1条边与其他n-1个顶点相连,总计n个顶点有n(n-1)条边。

但在无向图中,顶点i到顶点j与顶点j到顶点i是同一条边,所以总共有n(n-1)/2条边。

2.右边的有向图是强连通的吗?

请列出所有的简单路径。

[解答]

判断一个有向图是否强连通,要看从任一顶点出发是否能够回到该顶点。

右面的有向图做不到这一点,它不是强连通的有向图。

各个顶点自成强连通分量。

所谓简单路径是指该路径上没有重复的顶点。

从顶点A出发,到其他的各个顶点的简单路径有A→B,A→D→B,A→B→C,A→D→B→C,A→D,A→B→E,A→D→E,A→D→B→E,A→B→C→F→E,A→D→B→C→F→E,A→B→C→F,A→D→B→C→F。

从顶点B出发,到其他各个顶点的简单路径有B→C,B→C→F,B→E,B→C→F→E。

从顶点C出发,到其他各个顶点的简单路径有C→F,C→F→E。

从顶点D出发,到其他各个顶点的简单路径有D→B,D→B→C,D→B→C→F,D→E,D→B→E,D→B→C→F→E。

从顶点E出发,到其他各个顶点的简单路径无。

从顶点F出发,到其他各个顶点的简单路径有F→E。

3.给出右图的邻接矩阵、领接表和领接多重表表示。

[解答]

(1)邻接矩阵

(2)邻接表

0

A

1

B

2

C

3

D

4

E

5

F

1

2

5

4

4

3

(出边表)

1

4

0

A

1

B

2

C

3

D

4

E

5

F

0

1

2

3

(入边表)

0

1

3

5

(3)邻接多重表(十字链表)

data

fin

fout

0

A

1

B

2

C

3

D

4

E

5

F

i

j

ilink

jlink

0

1

(A,B)

0

3

(A,D)

(B,C)

1

2

1

4

(B,E)

(C,F)

2

5

3

1

(D,B)

(D,E)

3

4

5

4

(F,E)

 

4.用邻接矩阵表示图时,矩阵元素的个数与顶点个数是否相关?

与边的条数是否相关?

[解答]

用邻接矩阵表示图,矩阵元素的个数是顶点个数的平方,与边的条数无关。

矩阵中非零元素的个数与边的条数有关。

5.对于有n个顶点的无向图,采用邻接矩阵表示,如何判断以下问题:

图中有多少条边?

任意两个顶点i和j之间是否有边相连?

任意一个顶点的度是多少?

[解答]

用邻接矩阵表示无向图时,因为是对称矩阵,对矩阵的上三角部分或下三角部分检测一遍,统计其中的非零元素个数,就是图中的边数。

如果邻接矩阵中A[i][j]不为零,说明顶点i和j之间有边相连。

此外统计出矩阵第i行或第j列的非零元素个数,就可得到顶点i的度数。

6.对于如下图所示的有向图,试写出:

(1)从顶点①出发进行深度优先搜索所得到的深度优先生成树;

(2)从顶点②出发进行广度优先搜索所得到的广度优先生成树。

[解答]

(1)以顶点①为根的深度优先生成树(不唯一):

(2)以顶点②为根的广度优先生成树:

7.试对下图所示的AOE网络,解答下列问题。

(1)这个工程最早可能在什么时间结束。

(2)求每个事件的最早开始时间Ve[i]和最迟允许开始时间Vl[i]。

(3)求每个活动的最早开始时间e()和最迟允许开始时间l()。

(4)确定哪些活动是关键活动。

画出由所有关键活动构成的图,指出哪些活动加速可使整个工程提前完成。

[解答]

按拓扑有序的顺序计算各个顶点的最早可能开始时间Ve和最迟允许开始时间Vl。

然后再计算各个活动的最早可能开始时间e和最迟允许开始时间l,根据l—e是否等于0来确定关键活动,从而确定关键路径。

1①

2②

3③

4④

5⑤

6⑥

Ve

Vl

<1,2>

<1,3>

<3,2>

<2,4>

<2,5>

<3,5>

<4,6>

<5,6>

e

0

8

l

17

8

e-l

17

0

0

8

0

12

8

0

此工程最早完成时间为43。

关键路径为<1,3><3,2><2,5><5,6>

8.判断题

(1)用邻接矩阵存储一个图时,在不考虑压缩存储的情况下,所占用的存储空间大小只与图中的顶点个数有关,而与图的边数无关。

(2)邻接表只能用于有向图的存储,领接矩阵对于有向图和无向图的存储都适用;

(3)邻接矩阵只适用于稠密图(边数接近于顶点数的平方),邻接表适用于稀疏图(边数远小于顶点数的平方);

(4)有n(n≥1)个顶点的无向连通图最少有n-1条边;

(5)有n(n≥1)个顶点的有向强连通图最少有n条边;

(6)存储无向图的邻接矩阵是对称的,因此只要存储领接矩阵的下(上)三角部分就可以了;

(7)连通分量是无向图中的极小连通子图;

(8)强连通分量是有向图中的极大强连通子图;

(9)对任何用顶点表示活动的网络(AOV网)进行拓扑排序的结果都是唯一的;

(10)有回路的有向图不能完成拓扑排序;

(11)在AOE网络中一定只有一条关键路径;

(12)关键活动不按期完成就会影响整个工程的完成时间;

(13)任何一个关键活动提前完成,那么整个工程将会提前完成;

(14)所有的关键活动都提前完成,那么整个工程将会提前完成;

(15)任何一个关键活动延迟,那么整个工程将会延迟。

[解答]

(1)√

(2)×(3)√(4)√(5)√

(6)√(7)×(8)√(9)×(10)√

(11)×(12)√(13)×(14)√(15)√

9.填空题

(1)在一个无向图中,所有顶点的度数之和等于所有边数的倍。

(2)在一个具有n个顶点的无向完全图中,包含有条边,在一个具有n个顶点的有向完全图中,包含在条边。

(3)在一个具有n个顶点的无向图中,要连通所有顶点则至少需要条边。

(4)表示图的三种存储结构为、和。

(5)对于一个具有n个顶点的图,若采用邻接矩阵表示,则矩阵大小为。

(6)对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点分别为和条。

(7)在有向图的邻接表和逆领接表表示中,每个顶点的边链表中分别链接着该顶点的所有和结点。

(8)对于一个具有n个顶点和e条边的有向图和无向图,若采用邻接多重表表示,则存于顶点表中的边链表指针分别有和个,所有边结点有个。

(9)对于一个具有n个顶点和e条边的无向图,当分别采用邻接矩阵、邻接表和邻接多重表表示时,求任一顶点度数的时间复杂度依次为、和。

(10)假定一个图具有n个顶点和e条边,则采用邻接矩阵、邻接表和邻接多重表表示时,其相应的空间复杂度分别为、和。

(11)对用邻接矩阵表示的图进行任一种遍历时,其时间复杂度为,对用邻接表表示的图进行任一种遍历时,其时间复杂度为。

(12)对于一个具有n个顶点和e条边的连通图,其生成树中的顶点数和边数分别为和。

[解答]

(1)2

(2)n(n-1)/2,n(n-1)

(3)n-1(4)邻接矩阵,邻接表,邻接多重表

(5)n2(6)e,2e

(7)出边,入边(8)2n,n,e

(9)O(n),O(e/n),O(e)(10)O(n2),O(n+e),O(n+e)

(11)O(n2),O(e)(12)n,n-1

10.从供选择的答案中选择与下面有关图的叙述中各括号相匹配的词句,将其编号填入相应的括号内。

(1)采用邻接表存储的图的深度优先遍历算法类似于二叉树的(A)。

(2)采用邻接表存储的图的广度优先遍历算法类似于二叉树的(B)。

(3)对于含有n个顶点和e条边的无向连通图,利用Prim算法产生最小生成树,其时间复杂度为(C),利用Kruskal算法产生最小生成树,其时间复杂度为(D)。

(4)设图中有n个顶点和e条边,进行深度优先搜索的时间复杂度至多为(E),进行广度优先搜索的时间复杂度至多为(F)。

(5)对于一个具有n个顶点和e条边的无向图,进行拓扑排序时,总的时间为(G)。

(6)判断有向图是否存在回路,除了可以利用拓扑排序方法外,还可以利用(H)。

供选择的答案:

A,B.①中序遍历②前序遍历③后序遍历④按层次遍历

C,D.①O(n2)②O(n*e)③O(nlog2n)④O(elog2e)

E,F.①O(n+e)②O(n*e)③O(nlog2n)④O(elog2e)

G.①n②n+1③n-1④n+e

H.①求关键路径的方法②求最短路径的Dijkstra方法

③深度优先遍历算法④广度优先遍历算法

[解答]

A.②B.④C.①D.④

E.①F.①G.①H.③

11.画出下图所示的AOV网的所有拓扑有序序列。

[解答]共有8种:

ADBECFADBEFCADEBCFADEBFC

DABECFDABEFCDAEBCFDAEBFC

12.什么样的图其最小生成树是惟一的?

用Prim和Kruskal求最小生成树的时间各为多少?

它们分别适合于哪类图?

[解答]

若带权图中所有边的权都两两不等,则该图的最小生成树一定是惟一的。

普里姆(Prim)算法的时间复杂度是O(n2),适合于稠密图;克鲁斯卡尔(Kruskal)算法的时间复杂度是O(elog2e),适合于稀疏图。

(其中,n和e分别是图的顶点数和边数)。

13.对下图所示的连通图,请分别用普里姆(Prim)和克鲁斯卡尔(Kruskal)算法构造其最小生成树。

[解答]

用普里姆(Prim)算法构造该图最小生成树如下图所示(从顶点h开始):

用克鲁斯卡尔(Kruskal)算法构造该图最小生成树如下图所示:

14.对图所示的有向图,试利用Dijkstra算法求出从源点1到其他各顶点的最短路径,并写出执行算法过程中扩充红点集的每次循环状态(见表7.2)。

[解答]

红点集

k

D[1]

D[2]

D[3]

D[4]

D[5]

D[6]

P[1]

P[2]

P[3]

P[4]

P[5]

P[6]

{1}

{1,3}

{1,3,2}

{1,3,2,6}

{1,3,2,6,4}

{1,3,2,6,4,5}

-

3

2

6

4

5

0

0

0

0

0

0

20

19

19

19

19

19

15

15

15

15

15

15

29

29

29

29

29

29

29

25

25

25

25

25

-1

-1

-1

-1

-1

-1

1

3

3

3

3

3

1

1

1

1

1

1

-1

-1

-1

6

6

6

-1

-1

2

2

2

2

-1

3

3

3

3

3

从顶点1到其他各顶点的最短路径及距离如下:

1→3(15)1→3→2(19)1→3→6→4(29)1→3→2→5(29)1→3→6(25)

第九章查找

一、单项选择题

1.在等概率查找的情况下,对n个关键字的线性表进行顺序查找,成功时平均查找长度是B。

A.n/2B.(n+1)/2C.n(n-1)/2D.1/2

2.设顺序存储在线性表中的n个关键字K1,K2,…,Kn的查找概率依次为P1,P2,…,Pn,且有P1

A.从K1到KnB.从Kn到K1C.从Kn/2到KnD.从Kn/2到K1

3.在等概率查找情况下,对n个关键字的有序表进行二分查找的时间复杂度是B。

A.O(n)B.O(log2n)C.O(n2)D.O(nlog2n)

4.对400个关键进行分块查找且采用顺序查找方法确定块及块内的关键字,最好把400个关键字等分成A。

A.20块B.200块C.10块D.50块

5.在一个n个结点的二叉排序树中查找一个关键字最多要进行B次关键字比较。

A.1B.nC.

D.n/2

6.在对有1023个结点的二叉排序树进行等概率查找时,要想使成功查找时平均查找长度ASL最小,该二叉树高度应当是A。

A.10B.11C.12D.13

7.设有1000个关键字,若用二分法检索,关键字比较次数最大值为D。

A.1000B.500C.20D.10

8.设一个有序表为{10,20,25,30,45,60,100,150,300},当采用二分法查找关键字25时,所需的关键字比较次数是B。

A.1B.3C.4D.5

9.设一二叉树有500个结点,查找一个关键字时,关键字比较最多要进行A次。

A.500B.9C.18D.1

10.采用二分法查找,要求线性表必须C。

A.用链表实现B.用顺序方式、任意序存储

C.顺序存储,且按关键大小排列D.顺序存储且按关键字由小到大排列

二、填空题

1.对有n个关键字的线性表进行等概率顺序查找,成功检索的平均查找长度为

(n+1)/2。

2.对有n(n>0)个关键字的有序线性表进行二分法查找,关键字的比较次数最大是

3.对有2047个关键字的有序顺序表进行等概率的二分法查找,成功查找的平均查找长度是20481/2047。

4.A,B,C,D四个关键字可以构成14个不同的二叉排序树,其中4个是平衡二叉树。

5.中序遍历二叉排序树得到的序列是关键字升序序列。

6.在二叉排序树上成功查找一个关键字的时间复杂度是O(log2n)。

7.m阶B_树的每个结点最多包含m-1个关键字。

8.m阶B树中,每个非根结点至少有

个关键字。

9.散列表的成功查找平均查找长度与装载因子直接有关。

10.散列表技术中解决冲突的主要方法有开放地址法和拉链法。

三、求解下列问题

1.设有n个关键字K1

设被查找的关键字K与Ki相等的概率为Pi(i=1,2,…,n),KKn的概率为qn,Ki

若在R0中存放待查的关键字K(哨兵),从Kn向K1查找K,试问总的(成功和不成功的都算在内)平均查找长度是多少?

[解答]

先考虑成功检索,即K与某个Ki相等,若K=Kn,则需要进行1次关键字比较;若K=Ki,则需要进行(n+1-i)次关键字比较。

再考虑不成功的检索。

若K>Kn,则需要进行1次关键字比较(由于关键字是升序排列,Kn为顺序表内最大的关键字,若待查关键字K>Kn,则

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 工作总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1