数据结构第五章参考答案

合集下载

数据结构第五章 查找 答案

数据结构第五章 查找 答案

数据结构与算法上机作业第五章查找一、选择题1、若构造一棵具有n个结点的二叉排序树,在最坏情况下,其高度不超过 B 。

A. n/2B. nC. (n+1)/2D. n+12、分别以下列序列构造二叉排序数(二叉查找树),与用其他3个序列所构造的结果不同的是 C :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)3、不可能生成下图所示的二叉排序树的关键字的序列是 A 。

A. 4 5 3 1 2B. 4 2 5 3 1C. 4 5 2 1 3D. 4 2 3 1 54、在二叉平衡树中插入一个结点造成了不平衡,设最低的不平衡点为A,并已知A的左孩子的平衡因子为0,右孩子的平衡因子为1,则应作 C 型调整使其平衡。

A. LLB. LRC. RLD. RR5、一棵高度为k的二叉平衡树,其每个非叶结点的平衡因子均为0,则该树共有 C 个结点。

A. 2k-1-1B. 2k-1+1C. 2k-1D. 2k+16、具有5层结点的平衡二叉树至少有 A 个结点。

A. 12B. 11C. 10D. 97、下面关于B-和B+树的叙述中,不正确的是 C 。

A. B-树和B+树都是平衡的多叉树B. B-树和B+树都可用于文件的索引结构C. B-树和B+树都能有效地支持顺序检索D. B-树和B+树都能有效地支持随机检索8、下列关于m阶B-树的说法错误的是 D 。

A. 根结点至多有m棵子树B. 所有叶子结点都在同一层次C. 非叶结点至少有m/2(m为偶数)或m/2+1(m为奇数)棵子树D. 根结点中的数据是有序的9、下面关于哈希查找的说法正确的是 C 。

A. 哈希函数构造得越复杂越好,因为这样随机性好,冲突小B. 除留余数法是所有哈希函数中最好的C. 不存在特别好与坏的哈希函数,要视情况而定D. 若需在哈希表中删去一个元素,不管用何种方法解决冲突都只要简单地将该元素删去即可10、与其他查找方法相比,散列查找法的特点是 C 。

数据结构(c语言版)第五章答案

数据结构(c语言版)第五章答案

数据结构(c语言版)第五章答案第五章1、设二维数组A【8】【10】是一个按行优先顺序存储在内存中的数组,已知A【0】【0】的起始存储位置为1000,每个数组元素占用4个存储单元,求:(1)A【4】【5】的起始存储位置。

A【4】【5】的起始存储位置为1000+(10*4+5)*4=1180;(2)起始存储位置为1184的数组元素的下标。

起始存储位置为1184的数组元素的下标为4(行下标)、6(列下标)。

2、画出下列广义表D=((c),(e),(a,(b,c,d)))的图形表示和它们的存储表示。

略,参考第5·2节应用题第5题分析与解答。

3、已知A为稀疏矩阵,试从时间和空间角度比较采用两种不同的存储结构(二维数组和三元组表)实现求∑a(i,j)运算的优缺点。

稀疏矩阵A采用二维数组存储时,需要n*n个存储单元,完成求∑ii a(1≤i≤n)时,由于a【i】【i】随机存取,速度快。

但采用三元组表时,若非零元素个数为t,需3t+3个存储单元(t个分量存各非零元素的行值、列值、元素值),同时还需要三个存储单元存储存稀疏矩阵A的行数、列数和非零元素个数,比二维数组节省存储单元;但在求∑ii a(1≤i≤n)时,要扫描整个三元组表,以便找到行列值相等的非零元素求和,其时间性能比采用二维数组时差。

4、利用三元组存储任意稀疏数组时,在什么条件下才能节省存储空间?当m行n列稀疏矩阵中非零元素个数为t,当满足关系3*t<m*n 时,利用三元组存储稀疏数组时,才能节省存储空间。

< bdsfid="74" p=""></m*n时,利用三元组存储稀疏数组时,才能节省存储空间。

<>5、求下列各广义表的操作结果。

(1)GetHead((a,(b,c),d))GetHead((a,(b,c),d))=a(2)GetTail((a,(b,c),d))GetTail((a,(b,c),d))=((b,c),d)(3)GetHead(GetTail((a,(b,c),d)))GetHead(GetTail((a,(b,c),d)))=(b,c)(4)GetTail(GetHead((a,(b,c),d)))GetTail(GetHead((a,(b,c),d)))=()第六章1、已知一棵树边的集合为{(i,m),(i,n),(e,i),(b,e),(b,d),(a,b),(g,j),(g,k),(c,g),(c,f),(h,l),(c,h),(a,c)}用树形表示法画出此树,并回答下列问题:(1)哪个是根结点?(2)哪些是叶结点?(3)哪个是g的双亲?(4)哪些是g的祖先?(5)哪些是g的孩子?(6)哪些是e的子孙?(7)哪些是e的兄弟?哪些是f的兄弟?(8)结点b和n的层次号分别是什么?(9)树的深度是多少?(10)以结点c为根的子树的深度是多少?(11)树的度数是多少?略。

数据结构作业系统_第五章答案

数据结构作业系统_第五章答案
5.21④ 假设稀疏矩阵 A 和 B 均以三元组表作为存储结构。 试写出矩阵相加的算法,另设三元组表 C 存放结果矩阵。 要求实现以下函数: Status AddTSM(TSMatrix A,TSMatrix B,TSMatrix &C); /* 三元组表示的稀疏矩阵加法: C=A+B */ 稀疏矩阵的三元组顺序表类型 TSMatrix 的定义: #define MAXSIZE 20 // 非零元个数的最大值 typedef struct { int i,j; // 行下标,列下标 ElemType e; // 非零元素值 }Triple; typedef struct { Triple data[MAXSIZE+1]; // 非零元三元组表,data[0]未用 int mu,nu,tu; // 矩阵的行数、列数和非零元个数 }TSMatrix; Status AddTSM(TSMatrix A,TSMatrix B,TSMatrix &C) /* 三元组表示的稀疏矩阵加法: C=A+B */ { int k=1,n=1,p=1; ElemType ce; if(A.mu!=B.mu||A.nu!=B.nu)return ERROR; while(k<=A.tu&&n<=B.tu) { if(A.data[k].i==B.data[n].i&&A.data[k].j==B.data[n].j) { ce=A.data[k].e+B.data[n].e; if(ce) { C.data[p].i=A.data[k].i; C.data[p].j=A.data[k].j; C.data[p].e=ce; p++; //printf("%d,,%d ",ce,C.data[p-1].e); } k++;n++; } else if(A.data[k].i<B.data[n].i||A.data[k].i==B.data[n].i&&A.data[k].j<B.data[n].j) { C.data[p].e=A.data[k].e; C.data[p].i=A.data[k].i;

数据结构第五章作业答案

数据结构第五章作业答案

第5章数组和广义表1.选择题(1)假设以行序为主序存储二维数组A=array[1..100,1..100],设每个数据元素占2个存储单元,基地址为10,则LOC[5,5]=()。

A.808 B.818 C.1010 D.1020(2)设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j 的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为()。

A.BA+141 B.BA+180 C.BA+222 D.BA+225(3)设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为()。

A.13 B.33 C.18 D.40(4)若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在B 中确定a ij(i<j)的位置k的关系为()。

A.i*(i-1)/2+j B.j*(j-1)/2+i C.i*(i+1)/2+j D.j*(j+1)/2+i (5)A[N,N]是对称矩阵,将下面三角(包括对角线)以行序存储到一维数组T[N(N+1)/2]中,则对任一上三角元素a[i][j]对应T[k]的下标k 是()。

A.i(i-1)/2+j B.j(j-1)/2+i C.i(j-i)/2+1 D.j(i-1)/2+1(6)设二维数组A[1.. m,1.. n](即m行n列)按行存储在数组B[1.. m*n]中,则二维数组元素A[i,j]在一维数组B中的下标为()。

A.(i-1)*n+j B.(i-1)*n+j-1 C.i*(j-1) D.j*m+i-1(7)数组A[0..4,-1..-3,5..7]中含有元素的个数()。

A.55 B.45 C.36 D.16(8)广义表A=(a,b,(c,d),(e,(f,g))),则Head(Tail(Head(Tail(Tail(A)))))的值为()。

《数据结构及其应用》笔记含答案 第五章_树和二叉树

《数据结构及其应用》笔记含答案 第五章_树和二叉树

第5章树和二叉树一、填空题1、指向结点前驱和后继的指针称为线索。

二、判断题1、二叉树是树的特殊形式。

()2、完全二叉树中,若一个结点没有左孩子,则它必是叶子。

()3、对于有N个结点的二叉树,其高度为。

()4、满二叉树一定是完全二叉树,反之未必。

()5、完全二叉树可采用顺序存储结构实现存储,非完全二叉树则不能。

()6、若一个结点是某二叉树子树的中序遍历序列中的第一个结点,则它必是该子树的后序遍历序列中的第一个结点。

()7、不使用递归也可实现二叉树的先序、中序和后序遍历。

()8、先序遍历二叉树的序列中,任何结点的子树的所有结点不一定跟在该结点之后。

()9、赫夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近。

()110、在赫夫曼编码中,出现频率相同的字符编码长度也一定相同。

()三、单项选择题1、把一棵树转换为二叉树后,这棵二叉树的形态是(A)。

A.唯一的B.有多种C.有多种,但根结点都没有左孩子D.有多种,但根结点都没有右孩子解释:因为二叉树有左孩子、右孩子之分,故一棵树转换为二叉树后,这棵二叉树的形态是唯一的。

2、由3个结点可以构造出多少种不同的二叉树?(D)A.2 B.3 C.4 D.5解释:五种情况如下:3、一棵完全二叉树上有1001个结点,其中叶子结点的个数是(D)。

A.250 B. 500 C.254 D.501解释:设度为0结点(叶子结点)个数为A,度为1的结点个数为B,度为2的结点个数为C,有A=C+1,A+B+C=1001,可得2C+B=1000,由完全二叉树的性质可得B=0或1,又因为C为整数,所以B=0,C=500,A=501,即有501个叶子结点。

4、一个具有1025个结点的二叉树的高h为(C)。

A.11 B.10 C.11至1025之间 D.10至1024之间解释:若每层仅有一个结点,则树高h为1025;且其最小树高为⎣log21025⎦ + 1=11,即h在11至1025之间。

数据结构预算法 第5章习题解答

数据结构预算法 第5章习题解答
(图 5-37)


0 1 2 3 4 5
1 2 3 4 5 6 ^
3 0 3
^ 2 4 ^ 5 ^
0 1
1 4 ^
3 ^
4)逆邻接表: 0 1 2 3 4 5 1 2 3 4 5 6 5)强连通分量:
1 4 1 0 2 2 ^ ^ 2 5 ^ 4 ^ 4 5 ^ ^
(2)设无向图 G 如图 5-38 所示,试给出: 1)该图的邻接矩阵; 2)该图的邻接表; 3)该图的多重邻接表; 4)从 V1 出发的“深度优先”遍历序列; 5)从 V1 出发的“广度优先”遍历序列。 【解答】 1) 该图的邻接矩阵: 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0
{if(p!=s) p->next=s->next; else (G->adjlist[e->adjvex].firstedge=s->next;)} if(s) free(s); break; } } for(i=v;i<G->n;i++) /*删除顶点值*/ {G->adjlist[i].vertex=G->adjlist[i+1].vextex; G->adjlist[i].first[i].firstedge=G->adjlist[i+1].firstedge; } } void DeleteArc(AALGraph *G,int v,int w) /*在图 G 中删除序号为 v,w 的顶点之的边*/ {EdgeNode *s,*p; s=G->adjlist[v].firstedge; p=s; for(;s;s=s->next); /*在与 m 邻接的点中找 n*/ {if(s->adjvex==w) /*若找到邻接点 n,则将该边从边表中脱出*/ {if(p!=s) p->next=s->next; else G->adjlist[v].firstedge=s->next; } if(s) free(s); /*释放要删除的边结点*/ } s=G->adjlist[w].firstedge;p=s; for(;s;p=s,s=s->next) /*在与 n 邻接的点中找 m*/ {if(s->adjvex==v) /*若找到邻接点 m,则将该边从边表中脱出*/ {if(p!=s) p->next=s->next; else G->adjlist[w].firstedge=s->next; } if(s) free(s); /*释放要删除的边结点*/ } G->e--; } (3)试以十字链表为存储结构实现算法设计题(1)中所列图的基本操作。 算法略。 (4)试以邻接多重表为存储结构实现算法设计题(1)中所列图的基本操作。 算法略。 (5)对于含有 n 个顶点的有向图,编写算法由其邻接表构造相应的逆邻接表。 【解答】 Void InvertAdjList(ALGraph G, ALGraph *H) /*由有向图的邻接表 G 建立其逆邻接表 H*/ {for (i=1;i<=n;i++) /*设有向图有 n 个顶点,建逆邻接表的顶点向量*/ {H[i]->vertex=G.adjlist[i].vertex; H->firstedge=NULL;} for (i=0; i<n; i++) /*邻接表转为逆邻接表*/ {p= G.adjlist[i].firstedge; /*取指向邻接表的指针*/ while (p!=null) {j=p->adjvex;

数据结构第五章习题答案

数据结构第五章习题答案

1.二维数组A行下标i的范围从1到12,列下标j的范围从3到10,采用行序为主序存储,每个数据存储元素占用4个存储单元,该数组的首地址(既A[1][3]的地址)为1200,则A[6][5]的地址为(D)A.1400B.1404C.1372D.13682.有一个M*N的矩阵A,若采用行序为主序进行顺序存储,每个元素占用8个字节,则A ij (1≤i≤M,1≤i≤N)元素的相对字节地址(相对首元素地址而言)为(B)A.((i-1)*N+j)*8B.((i-1)*N+j-1)*8C.(i*N+j-1)*8D.((i-1)*N+j+1)*83.稀疏矩阵一般的压缩存储方法有两种,即(D)A.二维数组和三维数组B.三元组和散列C.散列和十字链表D.三元组和十字链表4.若采用三元组压缩技术存储稀疏矩阵,只要把每个元素的行下标和列下标互换,就完成了对该矩阵的转置运算,这种观点(B)A.正确B.错误5.广义表((a,b),c,d)的表头是(C),表尾是(D)。

A.aB.bC.(a,b)D.(c,d)6.一个广义表的表头总是广义表,这个断言是(B)A.正确B.错误7.二维数组A[10][20]采用列序为主方式存储,每个元素占一个存储单元,并且A[0][0]的存储地址是200,则A[6][12]的地址是(326)8.有一个10阶对称矩阵A,采用压缩存储方式(以行序为主存储,且A[0][0]=1),则A[4][3]的地址是(14)9.一个广义表为(a,(a,b),d,e,((i,j),k)),则该广义表的长度为(5),深度为(3)10.广义表((a),((b),c),(((d))))的表头是((a)),表尾是((((b),c),(((d)))))11.已知广义表A=((a,b,c),(d,e,f)),则广义表运算head(tail(tail(A)))=(e)12.已知广义表GL=(a,(b,c,d),e),运用head和tail函数取出GL中的原子b的运算是(head(head(tail(GL))))13.特殊矩阵和压缩矩阵哪一种压缩存储后会失去随机存取的功能?为什么?答:稀疏矩阵在进行压缩存储后会失去随机存取的功能,因为非零元素的位置没有办法确定。

《数据结构》吕云翔编著第5章树习题解答

《数据结构》吕云翔编著第5章树习题解答

第五章树课后习题讲解一、选择题⑴如果结点A有3个兄弟,B是A的双亲,则结点B的度是()。

A 1B 2C 3D 4【解答】D⑵设二叉树有n个结点,则其深度为()。

A n-1B nC +1D 不能确定【解答】D【分析】此题并没有指明是完全二叉树,则其深度最多是n,最少是 +1。

⑶二叉树的前序序列和后序序列正好相反,则该二叉树一定是()的二叉树。

A 空或只有一个结点B 高度等于其结点数C 任一结点无左孩子D 任一结点无右孩子【解答】B【分析】此题注意是序列正好相反,则左斜树和右斜树均满足条件。

⑷线索二叉树中某结点R没有左孩子的充要条件是()。

A R.lchild=NULLB R.ltag=0C R.ltag=1D R.rchild=NULL【解答】C【分析】线索二叉树中某结点是否有左孩子,不能通过左指针域是否为空来判断,而要判断左标志是否为1。

⑸深度为k的完全二叉树至少有()个结点,至多有()个结点,具有n个结点的完全二叉树按层序从1开始编号,则编号最小的叶子的序号是()。

A 2k-2+1B 2k-1C 2k -1 -1D 2k-1E 2k+1F 2k+1 -1G 2k -1+1H 2k【解答】B,C,A【分析】深度为k的完全二叉树最少结点数的情况应是第k层上只有1个结点,最多的情况是满二叉树,编号最小的叶子应该是在结点数最少的情况下,叶子结点的编号。

⑹一个高度为h的满二叉树共有n个结点,其中有m个叶子结点,则有()成立。

A n=h+mB h+m=2nC m=h-1D n=2m-1【解答】D【分析】满二叉树中没有度为1的结点,所以有m个叶子结点,则度为2的结点个数为m-1。

⑺任何一棵二叉树的叶子结点在前序、中序、后序遍历序列中的相对次序()。

A 肯定不发生改变B 肯定发生改变C 不能确定D 有时发生变化【解答】A【分析】三种遍历次序均是先左子树后右子树。

⑻如果T' 是由有序树T转换而来的二叉树,那么T中结点的前序序列就是T' 中结点的()序列,T中结点的后序序列就是 T' 中结点的()序列。

数据结构第5章作业参考答案

数据结构第5章作业参考答案

第5章树和二叉树一、单项选择题1.以下说法错误的是(B )。

A. 存在这样的二叉树,对其采用任何次序的遍历其结点访问序列均相同B. 二叉树是树的特殊情形C. 满二叉树中所有叶结点都在同一层上D. 在二叉树只有一棵子树的情况下,也要指出是左子树还是右子树2.树最适合用来表示( C)。

A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据3.下列叙述正确的是(C )。

A. 二叉树是度为2的有序树B. 完全二叉树一定存在度为1的结点C. 深度为k的二叉树中结点总数≤2k-1D. 对于有n个结点的二叉树,其高度为⎣log2n⎦+14.按照二叉树的定义,具有三个节点的二叉树有( C )种。

A.3B.4C.5D.65.下列叙述中正确的是(C )。

A. 二叉树是度为2的有序树B. 二叉树中的结点只有一个孩子时无左右之分C. 二叉树中每个结点最多只有两棵子树,并且有左右之分D. 二叉树若存在两个结点,则必有一个为根,另一个为左孩子6.设某二叉树中度数为0的结点数为N0,度数为1的结点数为N l,度数为2的结点数为N2,则下列等式成立的是( C )。

A.N0=N1+1 B.N=Nl+N2C.N=N2+1 D.N=2N1+17.设按照从上到下、从左到右的顺序从1开始对完全二叉树进行顺序编号,则编号为i结点的左孩子结点的编号为( B )。

A. 2i+1B.2iC.i/2D.2i-18.有100个结点的完全二叉树由根开始从上到下从左到右对结点进行编号,根结点的编号为1,编号为46的结点的右孩子的编号为( C )A.50 B.92 C.93 D.869.若一棵有n个结点的树,则该树中的度之和为(C )。

A. n+1B. nC. n-1D. 不确定10.已知完全二叉树有90个结点,则整个二叉树有( B )个度为1的结点。

A 0B 1C 2D 不确定11.一棵完全二叉树上有1001个结点,其中叶子结点的个数是(C )。

《数据结构》第五章习题参考答案

《数据结构》第五章习题参考答案

《数据结构》第五章习题参考答案一、判断题(在正确说法的题后括号中打“√”,错误说法的题后括号中打“×”)1、知道一颗树的先序序列和后序序列可唯一确定这颗树。

( ×)2、二叉树的左右子树可任意交换。

(×)3、任何一颗二叉树的叶子节点在先序、中序和后序遍历序列中的相对次序不发生改变。

(√)4、哈夫曼树是带权路径最短的树,路径上权值较大的结点离根较近。

(√)5、用一维数组存储二叉树时,总是以前序遍历顺序存储结点。

( ×)6、完全二叉树中,若一个结点没有左孩子,则它必是叶子结点。

( √)7、一棵树中的叶子数一定等于与其对应的二叉树的叶子数。

(×)8、度为2的树就是二叉树。

(×)二、单项选择题1.具有10个叶结点的二叉树中有( B )个度为2的结点。

A.8 B.9 C.10 D.112.树的后根遍历序列等同于该树对应的二叉树的( B )。

A. 先序序列B. 中序序列C. 后序序列3、二叉树的先序遍历和中序遍历如下:先序遍历:EFHIGJK;中序遍历:HFIEJKG 。

该二叉树根的右子树的根是:( C )A. EB. FC. GD. H04、在下述结论中,正确的是( D )。

①具有n个结点的完全二叉树的深度k必为┌log2(n+1)┐;②二叉树的度为2;③二叉树的左右子树可任意交换;④一棵深度为k(k≥1)且有2k-1个结点的二叉树称为满二叉树。

A.①②③B.②③④C.①②④D.①④5、某二叉树的后序遍历序列与先序遍历序列正好相反,则该二叉树一定是( D )。

A.空或只有一个结点B.完全二叉树C.二叉排序树D.高度等于其结点数三、填空题1、对于一棵具有n个结点的二叉树,对应二叉链接表中指针总数为__2n____个,其中___n-1_____个用于指向孩子结点,___n+1___个指针空闲着。

2、一棵深度为k(k≥1)的满二叉树有_____2k-1______个叶子结点。

数据结构第五章 查找 答案

数据结构第五章 查找 答案

数据结构与算法上机作业第五章查找一、选择题1、若构造一棵具有n个结点的二叉排序树,在最坏情况下,其高度不超过 B 。

A. n/2B. nC. (n+1)/2D. n+12、分别以下列序列构造二叉排序数(二叉查找树),与用其他3个序列所构造的结果不同的是 C :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)3、不可能生成下图所示的二叉排序树的关键字的序列是 A 。

A. 4 5 3 1 2B. 4 2 5 3 1C. 4 5 2 1 3D. 4 2 3 1 54、在二叉平衡树中插入一个结点造成了不平衡,设最低的不平衡点为A,并已知A的左孩子的平衡因子为0,右孩子的平衡因子为1,则应作 C 型调整使其平衡。

A. LLB. LRC. RLD. RR5、一棵高度为k的二叉平衡树,其每个非叶结点的平衡因子均为0,则该树共有 C 个结点。

A. 2k-1-1B. 2k-1+1C. 2k-1D. 2k+16、具有5层结点的平衡二叉树至少有 A 个结点。

A. 12B. 11C. 10D. 97、下面关于B-和B+树的叙述中,不正确的是 C 。

A. B-树和B+树都是平衡的多叉树B. B-树和B+树都可用于文件的索引结构C. B-树和B+树都能有效地支持顺序检索D. B-树和B+树都能有效地支持随机检索8、下列关于m阶B-树的说法错误的是 D 。

A. 根结点至多有m棵子树B. 所有叶子结点都在同一层次C. 非叶结点至少有m/2(m为偶数)或m/2+1(m为奇数)棵子树D. 根结点中的数据是有序的9、下面关于哈希查找的说法正确的是 C 。

A. 哈希函数构造得越复杂越好,因为这样随机性好,冲突小B. 除留余数法是所有哈希函数中最好的C. 不存在特别好与坏的哈希函数,要视情况而定D. 若需在哈希表中删去一个元素,不管用何种方法解决冲突都只要简单地将该元素删去即可10、与其他查找方法相比,散列查找法的特点是 C 。

数据结构课后习题及解析第五章

数据结构课后习题及解析第五章

第五章习题5.1 假设有6行8列的二维数组A,每个元素占用6个字节,存储器按字节编址。

已知A的基地址为1000,计算:数组A共占用多少字节;数组A的最后一个元素的地址;按行存储时元素A36的地址;按列存储时元素A36的地址;5.2 设有三对角矩阵An×n ,将其三条对角线上的元素逐行地存于数组B(1:3n-2)中,使得B[k]= aij,求:(1)用i,j表示k的下标变换公式;(2)用k表示i,j的下标变换公式。

5.3假设稀疏矩阵A和B均以三元组表作为存储结构。

试写出矩阵相加的算法,另设三元组表C存放结果矩阵。

5.4在稀疏矩阵的快速转置算法5.2中,将计算position[col]的方法稍加改动,使算法只占用一个辅助向量空间。

5.5写一个在十字链表中删除非零元素aij的算法。

5.6画出下面广义表的两种存储结构图示:((((a), b)), ((( ), d), (e, f)))5.7求下列广义表运算的结果:(1)HEAD[((a,b),(c,d))];(2)TAIL[((a,b),(c,d))];(3)TAIL[HEAD[((a,b),(c,d))]];(4)HEAD[TAIL[HEAD[((a,b),(c,d))]]];(5)TAIL[HEAD[TAIL[((a,b),(c,d))]]];实习题若矩阵Am×n 中的某个元素aij是第i行中的最小值,同时又是第j列中的最大值,则称此元素为该矩阵中的一个马鞍点。

假设以二维数组存储矩阵,试编写算法求出矩阵中的所有马鞍点。

第五章答案5.2设有三对角矩阵A n×n,将其三条对角线上的元素逐行的存于数组B[1..3n-2]中,使得B[k]=a ij,求:(1)用i,j表示k的下标变换公式;(2)用k表示i、j的下标变换公式。

【解答】(1)k=2(i-1)+j(2) i=[k/3]+1, j=[k/3]+k%3 ([ ]取整,%取余)5.4在稀疏矩阵的快速转置算法5.2中,将计算position[col]的方法稍加改动,使算法只占用一个辅助向量空间。

数据结构与算法第5章课后答案

数据结构与算法第5章课后答案

page: 1The Home of jetmambo - 第 5 章树和二叉树第 5 章树和二叉树(1970-01-01) -第 5 章树和二叉树课后习题讲解1. 填空题⑴树是n(n&ge;0)结点的有限集合,在一棵非空树中,有()个根结点,其余的结点分成m (m>0)个()的集合,每个集合都是根结点的子树。

【解答】有且仅有一个,互不相交⑵树中某结点的子树的个数称为该结点的(),子树的根结点称为该结点的(),该结点称为其子树根结点的()。

【解答】度,孩子,双亲⑶一棵二叉树的第i(i&ge;1)层最多有()个结点;一棵有n(n&gt;0)个结点的满二叉树共有()个叶子结点和()个非终端结点。

【解答】2i-1,(n+1)/2,(n-1)/2【分析】设满二叉树中叶子结点的个数为n0,度为2的结点个数为n2,由于满二叉树中不存在度为1的结点,所以n=n0+n2;由二叉树的性质n0=n2+1,得n0=(n+1)/2,n2=(n-1)/2。

⑷设高度为h的二叉树上只有度为0和度为2的结点,该二叉树的结点数可能达到的最大值是(),最小值是()。

【解答】2h -1,2h-1【分析】最小结点个数的情况是第1层有1个结点,其他层上都只有2个结点。

⑸深度为k的二叉树中,所含叶子的个数最多为()。

【解答】2k-1【分析】在满二叉树中叶子结点的个数达到最多。

⑹具有100个结点的完全二叉树的叶子结点数为()。

【解答】50【分析】100个结点的完全二叉树中最后一个结点的编号为100,其双亲即最后一个分支结点的编号为50,也就是说,从编号51开始均为叶子。

⑺已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点。

则该树中有()个叶子结点。

【解答】12【分析】根据二叉树性质3的证明过程,有n0=n2+2n3+1(n0、n2、n3分别为叶子结点、度为2的结点和度为3的结点的个数)。

⑻某二叉树的前序遍历序列是ABCDEFG,中序遍历序列是CBDAFGE,则其后序遍历序列是()。

数据结构课后习题答案第五章数组与广义表

数据结构课后习题答案第五章数组与广义表

第五章数组与广义表一、假设有二维数组A6*8,每个元素用相邻的6个字节存储,存储器按字节编址。

已知A的起始存储位置(基地址)为1000。

计算:1、数组A的体积(即存储量);2、数组A的最后一个元素a57的第一个字节的地址;3、按行存储时,元素a14的第一个字节的地址;4、按列存储时,元素a47的第一个字节的地址;答案:1、(6*8)*6=2882、loc(a57)=1000+(5*8+7)*6=1282或=1000+(288-6)=12823、loc(a14)=1000+(1*8+4)*6=10724、loc(a47)=1000+(7*6+4)*6=1276二、假设按低下标(行优先)优先存储整数数组A9*3*5*8时第一个元素的字节地址是100,每个整数占四个字节。

问下列元素的存储地址是什么?(1)a0000(2)a1111(3)a3125 (4)a8247答案:(1)100(2)loc(a1111)=100+(1*3*5*8+1*5*8+1*8+1)*4=776(3) loc(a3125)=100+(3*3*5*8+1*5*8+2*8+5)*4=1784(4) loc(a8247)=100+(8*3*5*8+2*5*8+4*8+7)*4=4416五、设有一个上三角矩阵(aij)n*n,将其上三角元素逐行存于数组B[m]中,(m 充分大),使得B[k]=aij且k=f1(i)+f2(j)+c。

试推导出函数f1,f2和常数C(要求f1和f2中不含常数项)。

答:K=n+(n-1)+(n-2)+…..+(n-(i-1)+1)+j-i=(i-1)(n+(n-i+2))/2+j-i所以f1(i)=(n+1/2)i-1/2i2f2(j)=jc=-(n+1)九、已知A为稀疏矩阵,试从空间和时间角度比较采用两种不同的存储结构(二维数组和三元组表)完成∑aii运算的优缺点。

(对角线求和)解:1、二维数组For(i=1;i<=n;i++)S=s+a[i][i];时间复杂度:O(n)2、for(i=1;i<=m.tu;i++)If(a.data[k].i==a.data[k].j) s=s+a.data[k].value;时间复杂度:O(n2)二十一、当稀疏矩阵A和B均以三元组表作为存储结构时,试写出矩阵相加的算法,其结果存放在三元组表C中。

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

习题5
1.填空题
(1)已知二叉树中叶子数为50,仅有一个孩子的结点数为30,则总结点数为(___________)。

答案:129
(2)3个结点可构成(___________)棵不同形态的二叉树。

答案:5
(3)设树的度为5,其中度为1~5的结点数分别为6、5、4、3、2个,则该树共有(___________)个叶子。

答案:31
(4)在结点个数为n(n>1)的各棵普通树中,高度最小的树的高度是(___________),它有(___________)个叶子结点,(___________)个分支结点。

高度最大的树的高度是(___________),它有(___________)个叶子结点,(___________)个分支结点。

答案:2 n-1 1 n 1 n-1
(5)深度为k的二叉树,至多有(___________)个结点。

答案:2k-1
(6)(7)有n个结点并且其高度为n的二叉树的数目是(___________)。

答案:2n-1
(8)设只包含根结点的二叉树的高度为0,则高度为k的二叉树的最大结点数为(___________),最小结点数为(___________)。

答案:2k+1-1 k+1
(9)将一棵有100个结点的完全二叉树按层编号,则编号为49的结点为X,其双亲PARENT (X)的编号为()。

答案:24
(10)已知一棵完全二叉树中共有768个结点,则该树中共有(___________)个叶子结点。

答案:384
(11)(12)已知一棵完全二叉树的第8层有8个结点,则其叶子结点数是(___________)。

答案:68
(13)深度为8(根的层次号为1)的满二叉树有(___________)个叶子结点。

答案:128
(14)一棵二叉树的前序遍历是FCABED,中序遍历是ACBFED,则后序遍历是(___________)。

答案:ABCDEF
(15)某二叉树结点的中序遍历序列为ABCDEFG,后序遍历序列为BDCAFGE,则该二叉树结点的前序遍历序列为(___________),该二叉树对应的树林包括(___________)棵树。

答案:EACBDGF 2
2.选择题
(1)在一棵度为3的树中,度为3的结点的个数为2,度为2的结点个数为1,则度为0的结点个数为()。

A. 4
B. 5
C. 6
D. 7
(2)下列陈述中正确的是()。

A. 二叉树是度为2的有序数
B. 二叉树中结点只有一个孩子时无左右之分
C. 二叉树中必有度为2的结点
D. 二叉树中最多只有两棵子树,并且有左右之分
(3)在K叉树中,如果结点M有3个兄弟,而且N是M的双亲,则N的度是()A. 3 B. 4 C. 5 D. 1
(4)设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为()。

A. 2h
B. 2h-1
C. 2h+1
D. h+1
(5)高度为5的完全二叉树至少有()个结点。

A. 16
B. 32
C. 31
D. 5
(6)具有65个结点的完全二叉树的高度为()。

(根的层次号为0)
A. 8
B. 7
C.6
D. 5
(7)对一个满二叉树,m个树叶,n个结点,深度为h,则(无)。

A. n=h+m
B. h+m=2n
C. m=h-1
D. n=2h-1
(8)任一棵二叉树,其叶子结点数为n0,度为2的结点数为n2,则存在关系()。

A. n2 +1=n0
B. n0 +1=n2
C. 2n2 +1=n0
D. n2 =2n0 +1
(9)某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。

A. bdgcefha
B. gdbecfha
C. bdgaechf
D. gdbehfca
(10)设m、n为一棵二叉树上的两个结点,在中序遍历时,n在m前的条件是()。

A. n在m右方
B. n是m祖先
C. n在m左方
D.n是m子孙
(11)一棵二叉树的广义表表示为a(b(c,d),e(f(g))),则得到的层序遍历序列为()。

A. abcdefg
B. cbdaegf
C. cdbgfea
D. abecdfg
(12)若二叉树采用二叉链表作为存储结构,要交换其所有分支结点左右子树的位置,利用()遍历方法最合适。

A. 前序
B. 中序
C. 后序
D. 层序
说明:显然,如果按前序或后序遍历,当访问某结点时,交换其左右孩子,则可完成要求。

进行层序遍历时,当结点出队时,交换左右孩子,也可以完成题目要求。

因此该题有3个答案,谈不上哪个最合适。

建议该题目将“最合适”改为“不合适”,这样答案应该是唯一的。

(13)对二叉树进行()遍历,可以得到该二叉树所有结点构成的排序序列。

A. 前序 B. 中序 C. 后序 D. 层序
(14)设F是一个森林,B是由F转换得到的二叉树,F中有n个非叶结点,则B中右指针域为空的结点有()个。

A. n-1
B. n
C. n+1
D. n+2
(15)利用3,6,8,12,5,7这6个值作为叶子结点的权,生成一棵哈夫曼树,该树的深度为()。

A.3
B. 4
C.5
D. 6
(16)若度为m的哈夫曼树中,其叶结点个数为n,则非叶结点的个数为()。

A. n-1 B. [n/m]-1
C. [(n-1)/(m-1)]
D. [n/(m-1)]-1
说明:在这里度为m的哈夫曼树是指仅含有度为0和m的结点的m叉树。

因此有:
(1) N=n+n m
(2) N = 1 + mn m
3.试分别画出具有3个结点的树和二叉树的所有不同形态。

答案:树:
二叉树:
4.试找出分别满足下面条件的所有二叉树:
(1)前序序列和中序序列相同;
答案: 右斜树
(2)中序序列和后序序列相同;
答案:左斜树
(3)前序序列和后序序列相同。

答案:只有根结点的树
5.一棵高度为h的满k叉树有如下性质:第h层上的结点都是叶结点,其余各层上每个结点都有k棵非空子树,如果按层次自顶向下,同一层自左向右,顺序从0开始对全部结点进行编号,试问:
(1)各层的结点个数是多少?
答案:n层的结点个数为k n-1
(2)编号为i的结点的父结点(若存在)的编号是多少?
答案:|(i-1)/k| (|·|表示取下整)
(3)编号为i的结点的第m个孩子结点(若存在)的编号是多少?
答案:k*i+m
(4)编号为i的结点有右兄弟的条件是什么?其右兄弟结点的编号是多少?
答案:i%k!=0 i+1
(5)叶子结点数n0和非叶子结点数n k之间满足的关系。

答案:n k*(k-1)=n0-1
6.若一棵二叉树的前序序列为abdgcefh,中序序列为dgbaechf,请画出该二叉树,并写出其后序序列。

答案:gdbehfca
7.请将图5-42所示树T转换为二叉树T′。

答案:
8. 对于图5-43所示的二叉树,该树的三种遍历分别是什么?
答案:
前序 -+a*b-cd/ef
中序 a+b*c-d-e/f
后序 abcd-*+ef/-
9. 对于图5-44所示的二叉树,请画出和其对应的森林。

答案:
10. 假设用于通信的电文仅由9个字符组成,并且出现概率为0.07(A)、0.19(B)、0.02(C)、0.06(D)、0.32(E)、0.03(F)、0.21(G)、0.10(H):
(1)画出哈夫曼树;
答案:
(2)每个字符的哈夫曼编码; 答案: A 0010 B 10 C 00000 D 0001 E 01 F 00001 G 11 H 0011
(3)计算其带权路径长度;
答案:WPL=0.07*4+0.19*2+0.02*5+0.06*4+0.32*2+0.03*5+0.21*2+0.10*4=2.61
(4)如果电文是“ABCDEFGH ”压缩前每个字符使用8bit 的ASCII 编码,则采用上面的哈夫曼编码,其压缩比是多少? 答案:0.43758
84
2524524=⨯+++++++=
η
友情提示:部分文档来自网络整理,供您参考!文档可复制、编制,期待您的好评与关注!。

相关文档
最新文档