数据结构第三章 树 答案
智慧树知到《数据结构》章节测试答案
第1章单元测试1、算法的时间复杂度取决于___。
答案:A和B2、数据在计算机内存中的表示是指()答案:数据的存储结构3、算法指的是()答案:求解特定问题的指令有限序列4、在数据结构中,与所使用的计算机无关的数据结构是()答案:逻辑7、某线性表采用顺序存储结构,每个元素占4个存储单元,首地址为100,则第12个元素的存储地址为( )。
答案:1448、算法能正确地实现预定功能的特性称为算法的()。
答案:正确性第2章单元测试1、链表不具备的特点是()。
答案:可随机访问任意一个结点3、线性表的顺序存储表示优于链式存储表示。
答案:错4、顺序存储结构的缺点是不便于修改,插入和删除需要移动很多结点。
答案:对5、在设头、尾指针的单链表中,与长度n有关的操作是( )。
答案:删除最后一个结点6、设指针q指向单链表中结点A,指针p指向单链表中结点A的后继结点B,指针s指向被插入的结点X,则在结点A和结点B间插入结点X的操作序列为( )。
答案:q->next=s; s->next=p;7、对于只在表的首、尾两端进行插入操作的线性表,宜采用的存储结构为( )。
答案:用尾指针表示的循环单链表8、在一个单链表中,若p所指节点不是最后节点,在p之后插入s所指节点,则执行( )。
答案:s->link=p->link;p->link=s;9、在双向链表存储结构中,删除p所指的结点时须修改指针____。
答案:p->next->prior=p->prior; p->prior->next=p->next;10、若事先不知道线性表的长度,则处理线性表时较好的存储结构是( )。
答案:单链表11、向一个有127个元素的顺序表中插入一个新元素并保存,原来顺序不变,平均要移动( )个元素。
答案:63.512、某线性表采用顺序存储结构,每个元素占4个存储单元,首地址为100,则第12个元素的存储地址为( )。
南邮_数据结构课后习题答案讲解
?
?
?1 4 7 ?
?
?
?4 4 9 ?
?4 4 9 ?
4.7 求对题图4-1的稀疏矩阵执行矩阵转置时数组
num[]和k[]的值。
col
0
1
2
3
4
num[col] 1
0
2
1
2
k[col]
0
1
1
3
4
2020/2/8
14
第六章 习题讲解
6-2. 对于三个结点 A,B和C,可分别组成多少不同 的无序树、有序树和二叉树?
int i,j,sum=0;
for (i=0;temp[i]<x&&i<n;i++); //找到首个大于等于 x的元素位置 i
if(i>n-1) return; //没有符合条件的元素
ffoorr ((jj==ii;;ljs<tn[j;]<) =y&&j<n;j++); if (lst[j]>y//)找到首个//大大于于yy的的元元素素前位移置 j
?0 0 ???3 0
6 0
0 0
0? 7??
行三元组:???10
2 0
6 ?列三元组:?1
? 3??
??0
0 2
?3?
6
? ?
? 0 0 0 0 0?
?1 4 7 ?
?3 2 ?8?
? ?
0
0 ? 8 10 0??
??3 2 ?8??
??3
3
10
? ?
?? 0 0 0 0 9??
?3 3 10 ?
(2)void Search_Delete(List *lst, T x,T y)
数据结构智慧树知到答案章节测试2023年哈尔滨商业大学
第一章测试1.数据结构的基本任务是()。
A:数据结构的评价与选择B:数据结构的设计与实现C:数据结构的运算实现D:逻辑结构和存储结构的设计答案:B2.计算算法的时间复杂度是属于一种()。
A:事前分析估算的方法B:事后分析估算的方法C:事后统计的方法D:事前统计的方法答案:A3.可以用()定义一个完整的数据结构。
A:数据元素B:数据关系C:抽象数据类型D:数据对象答案:C4.数据的逻辑关系是指数据元素的()。
A:存储方式B:数据项C:关联D:结构答案:C5.算法的计算量的大小称为计算的()。
A:效率B:复杂性C:实现性D:难度答案:B6.算法的时间复杂度取决于()。
A:问题的规模B:问题的规模和待处理数据的初态C:待处理数据的初态D:都不是答案:B7.数据元素是数据的最小单位。
()A:对B:错答案:B8.数据结构是带有结构的数据元素的结合。
()A:错B:对答案:B9.算法和程序没有区别,所以在数据结构中二者是通用的。
()A:错B:对答案:A10.数据结构的抽象操作的定义与具体实现有关。
()A:对B:错答案:B第二章测试1.下述哪一条是顺序存储结构的优点?()。
A:存储密度大B:删除运算方便C:插入运算方便D:可方便地用于各种逻辑结构的存储表示答案:A2.下面关于线性表的叙述中,错误的是哪一个?()。
A:线性表采用链接存储,便于插入和删除操作B:线性表采用顺序存储,必须占用一片连续的存储单元C:线性表采用链接存储,不必占用一片连续的存储单元D:线性表采用顺序存储,便于进行插入和删除操作答案:D3.线性表是具有n个()的有限序列(n>0)。
A:数据项B:表元素C:数据元素D:字符答案:C4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。
A:顺序表B:双链表C:带头结点的双循环链表D:单循环链表答案:A5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。
数据结构第三章习题
数据结构第三章习题本文共分为三部分,分别针对数据结构第三章中的不同习题进行解答。
第一部分,解答关于树和二叉树的习题。
1.对于给定的有“n(n>0)”个结点的树,边数应为“n-1”条。
解析:树是一种无环连通无向图,因此任意n个结点的树有n-1条边。
2.往2(2≤n≤64)叉树的每个结点上添加一个数据元素,设计一个数据结构,实现迅速求该2叉树中所有结点的数据元素之和。
解析:可以使用先序遍历算法来完成,先序遍历树的根节点,然后递归遍历左子树和右子树,将每个结点的数据元素加和。
3.设计一个算法,判定给定的二叉树是否是完全二叉树。
解析:可以使用层次遍历算法来判定。
如果一棵树是完全二叉树,那么层次遍历结果中,如果一些结点有右孩子,那么该结点之后的所有结点都必须有孩子;如果一些结点没有右孩子,则该结点之后的所有结点都不能有孩子。
4.设有一棵完全二叉树,编写算法,生成一棵采用二叉链表存储结构的二叉树。
解析:可以使用层次遍历算法来构建树。
从根节点开始,依次按层次遍历的顺序遍历所有结点,依次将结点和它的孩子结点用链表链接起来。
第二部分,解答关于图的习题。
1.利用邻接表存储图,写出一个算法,判断两个节点之间是否存在路径。
解析:可以使用深度优先算法或广度优先算法来判断两个节点之间是否存在路径。
首先从起始节点开始,遍历其邻接节点,递归或使用队列来保存需要遍历的节点,直到遍历到目标节点或遍历完所有的节点。
2.利用邻接表存储图,写出一个算法,求图的连通分量个数。
解析:可以使用深度优先算法或广度优先算法来求图的连通分量个数。
首先从起始节点开始,遍历其邻接节点,标记遍历过的节点,直到遍历完所有的节点。
每次从一个未标记的节点开始进行遍历,当所有的节点都被遍历过后,即可得到图的连通分量个数。
3.利用邻接表存储图,写出一个算法,判断给定的图是否为无向图。
解析:可以遍历所有的边,对于每一条边(u,v),如果(u,v)存在,则判断(v,u)是否存在,如果都存在,则图为无向图,否则为有向图。
2020智慧树知道网课《数据结构(中国海洋大学)》课后章节测试满分答案
第一章测试1【单选题】(2分)图书馆的数目检索系统采用关系的数据结构。
A.树形B.图状C.集合D.线性2【单选题】(2分)是相互之间存在一种或多种特定关系的数据元素的集合。
A.数据项B.数据结构C.数据元素D.数据3【单选题】(2分)()是一个值的集合和定义在这个值集上的一组操作的总称。
A.数据项B.数据类型C.数据元素D.数据结构4【单选题】(2分)算法的确定性是指()A.算法中没有逻辑B.在任何情况下,算法不会出现死循环C.算法中的每一条指令必须有确切的含义D.当输入数据非法时,算法也能作出反应或进行处理第二章测试1【单选题】(2分)线性表中的数据元素有一个前驱多个后继。
A.错B.对2【单选题】(2分)用顺序结构存储,删除最后一个结点时,()A.其它B.会移动其它结点位置C.可能会移动其它结点位置D.一定不会移动其它结点位置3【单选题】(2分)链表中逻辑上相邻的元素的物理地址__________相邻。
A.一定不B.必定C.其它D.不一定4【单选题】(2分)1.假设有两个按元素值递增有序排列的线性表A和B,均以单链表作存储结构,请编写算法将A表和B表归并成一个按元素值递减有序(即非递增有序,允许表中含有值相同的元素)排列的线性表C,并要求利用原表(即A表和B表)的结点空间构造C表。
//将合并逆置后的结果放在C表中,并删除B表StatusListMergeOppose_L(LinkList&A,LinkList&B,LinkList&C){LinkListpa,pb,qa,qb;pa=A;pb=B;qa=pa;//保存pa的前驱指针qb=pb;//保存pb的前驱指针pa=pa->next;pb=pb->next;A->next=NULL;C=A;while(pa&&pb){if(pa->data<pb->data){qa=pa;pa=pa->next;qa->next=A->next;//将当前最小结点插入A表表头A->next=qa;}else{qb=pb;pb=pb->next;()//将当前最小结点插入B表表头A->next=qb;}}while(pa){qa=pa;pa=pa->next;qa->next=A->next;A->next=qa;}while(pb){qb=pb;pb=pb->next;qb->next=A->next;A->next=qb;}pb=B;free(pb);returnOK;}A.qa->next=A->nextB.qa->next=A;C.qb->next=A->nextD.qb->next=A;5【单选题】(2分)假设某个单向循环链表的长度大于1,且表中既无头结点也无头指针。
数据结构第三章树答案
数据结构第三章树答案数据结构与算法上机作业第三章树一、选择题1、在一棵树中,如果结点A有3个兄弟,B是A的双亲,则B的度为 DA. 1B. 2C. 3D. 42、深度为h的完全二叉树至少有 D 个结点,至多有 B 个结点A. 2hB. 2h-1C. 2h+1D. 2h-13、具有n个结点的满二叉树有 C 个叶结点。
A. n/2B. (n-1)/2C. (n+1)/2D. n/2+14、一棵具有25个叶结点的完全二叉树最多有 C 个结点。
A. 48B. 49C. 50D. 515、已知二叉树的先根遍历序列是ABCDEF,中根遍历序列是CBAEDF,则后根遍历序列是 A 。
A. CBEFDAB. FEDCBAC. CBEDFAD. 不定6、具有10个叶结点的二叉树中有 B 个度为2的结点。
A. 8B. 9C. 10D. 117、一棵非空二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足 C 。
A. 所有非叶结点均无左孩子B. 所有非叶结点均无右孩子C. 只有一个叶子结点D. A和B同时成立8、在线索二叉树中,t所指结点没有左子树的充要条件是 B 。
A. t->left=NULLB. t->ltag=TRUEC. t->ltag=TRUE且t->left=NULLD. 以上都不对9、n个结点的线索二叉树上含有的线索数为 C 。
A. 2nB. n-1C. n+1D. n10、二叉树按照某种顺序线索化后,任一结点都有指向其前驱和后继的线索,这种说法 B 。
A. 正确B. 错误C. 不确定D. 都有可能11、具有n(n>1)个结点的完全二叉树中,结点i(2i>n)的左孩子结点是 D 。
A. 2iB. 2i+1C. 2i-1D. 不存在12、具有64个结点的完全二叉树的深度为 C 。
A. 5B. 6C.7D. 813、将一颗有100个结点的完全二叉树从上到下、从左到右一次对结点进行编号,根结点的编号为1,则编号为45的结点的右孩子的编号为 D 。
数据结构(树)习题与答案
一、单选题1、树最适合用来表示()。
A.元素之间具有分支层次关系的数据B.有序数据元素C.元素之间无联系的数据D.无序数据元素正确答案:A2、在树结构中,若结点A有三个兄弟,且B是A的双亲,则B的度是()。
A.5B.4C.3D.2正确答案:B3、下列陈述中正确的是()。
A.二叉树是度为2的有序树B.二叉树中结点只有一个孩子时无左右之分C.二叉树中每个结点最多只有两棵子树,并且有左右之分D.二叉树中必有度为2的结点正确答案:C4、设深度为h的二叉树中只有度为0和度为2的结点,则此类二叉树中所包含结点数至少为()。
A.2h-1B.2h+1C.h+1D.2h正确答案:A解析: A、除根之外,每层只有两个结点,且互为兄弟。
5、设深度为h的二叉树中只有度为0和度为2的结点,则此类二叉树中所包含结点数至多为()。
A.2h-1B. 2h+1-1C. 2h-1-1D. 2h+1正确答案:A解析: A、构成完全二叉树。
6、具有n(n>0)个结点的完全二叉树的深度为()。
A.⌊ log2(n)⌋ +1B.⌈log2(n)⌉C.⌊ log2(n)⌋D.⌈log2(n)+1⌉正确答案:A7、具有32个结点的完全二叉树有()个叶子结点。
A.16B.14C.15D.17正确答案:A解析: A、对结点按层序编号,32号结点的双亲结点编号为16,则17至32号结点都为叶子,共16个。
8、一棵完全二叉树的第6层上有23个叶子结点,则此二叉树最多有()结点。
A.81B.78C.80D.79正确答案:A解析: A、完全二叉树的叶子结点只能在最下两层,要使结点最多,这棵二叉树深度为7,前6层结点数共为63,第6层有32个结点,其中叶子为23个,非叶子为9个,它们的度都为2,第7层只有18个结点,故整棵二叉树结点数为81.9、具有3个结点的二叉树有()种。
A.6B.3C.5D.4正确答案:C10、若一棵二叉树有9个度为2的结点,5个度为1的结点,则叶子结点的个数为()。
数据结构 第3章答案(已核)
数据结构第3章答案(已核)数据结构第3章答案(已核)数据结构是计算机科学中非常重要的一门课程,它研究如何组织和存储数据,以便于高效地访问和处理。
在第3章中,我们学习了一些与树相关的重要概念和算法。
本文将对该章节的内容进行总结和解答。
一、树(Tree)树是一种非线性的数据结构,它由一组节点(Node)和一组连接这些节点的边(Edge)组成。
树的一个节点被称为根节点,它没有父节点;其他节点可以有一个或多个子节点。
树的每个节点除了根节点外都有且只有一个父节点。
树有许多种类,如二叉树、平衡树等。
二、二叉树(Binary Tree)二叉树是一种特殊的树结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。
在二叉树中,左子树和右子树也是二叉树。
二叉树有许多重要的性质和应用,比如二叉搜索树、平衡二叉树等。
三、二叉搜索树(Binary Search Tree)二叉搜索树是一种特殊的二叉树,它的左子树中的所有节点的值都小于根节点的值,而右子树中的所有节点的值都大于根节点的值。
这个特性使得在二叉搜索树中进行插入、删除和查找操作非常高效。
四、平衡二叉树(AVL Tree)平衡二叉树也是一种特殊的二叉搜索树,它的左子树和右子树的高度差不超过1。
通过对插入和删除操作进行树的旋转,可以保持平衡二叉树的平衡性,使得操作的时间复杂度保持在O(log n)。
五、堆(Heap)堆是一种特殊的树结构,它可以分为最大堆和最小堆。
最大堆中,父节点的值大于等于子节点的值;最小堆中,父节点的值小于等于子节点的值。
堆常用于实现优先队列等数据结构,有助于高效地找出最大或最小元素。
六、哈夫曼树(Huffman Tree)哈夫曼树是一种特殊的二叉树,用于实现哈夫曼编码。
在哈夫曼树中,频率较高的字符具有较短的编码,而频率较低的字符具有较长的编码。
哈夫曼树常用于数据压缩领域,可以有效地减少数据的存储空间。
七、图(Graph)图是一种复杂的数据结构,它由节点和连接节点的边组成。
数据结构习题参考答案
数据结构习题参考答案第一章答案一、填空题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.对N个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为( ) A.(N+1)/2 B. N/2 C. N D. [(1+N)*N ]/22.适用于折半查找的表的存储方式及元素排列要求为( )A.链接方式存储,元素无序 B.链接方式存储,元素有序C.顺序方式存储,元素无序D.顺序方式存储,元素有序3.当在一个有序的顺序存储表上查找一个数据时,即可用折半查找,也可用顺序查找,但前者比后者的查找速度( )A.必定快 B.不一定 C. 在大部分情况下要快 D. 取决于表递增还是递减4.有一个长度为12的有序表,按二分查找法对该表进行查找,在表内各元素等概率情况下查找成功所需的平均比较次数为()。
A.35/12 B.37/12 C.39/12 D.43/125.折半查找的时间复杂性为()A. O(n2)B. O(n)C. O(nlogn)D. O(logn)6.对有18个元素的有序表作折半查找,则查找A[3]的比较序列的下标为()A.1,2,3B.9,5,2,3C.9,5,3D.9,4,2,37.设有序表的关键字序列为{1,4,6,10,18,35,42,53,67,71,78,84,92,99},当用二分查找法查找健值为84的结点时,经()次比较后查找成功。
A.2B. 3C. 4D.128.用n个键值构造一棵二叉排序树,最低高度为()A.n/2B.、nC.lognD.logn+19.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是( ) 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.设有一组记录的关键字为{19,14,23,1,68,20,84,27,55,11,10,79},用链地址法构造散列表,散列函数为H(key)=key% 13,散列地址为1的链中有()个记录。
数据结构第三章参考答案
习题31.填空题(1)栈的进出原则是(___________),队列的进出原则是(___________)。
答案:后进先出(LIFO)先进先出(FIFO)(2)设32位计算机系统中,空栈S存储int型数据,栈顶指针为1024H。
经过操作序列push(1),push(2),pop,push(5),push(7),pop,push(6)之后,栈顶元素为(___________),栈底元素为(___________),栈的高度为(___________),输出序列是(___________),栈顶指针为(___________)H。
答案:6 1 3 2,7 1030(3)两栈共享存储空间,其数组大小为100,数组下标从0开始。
top1和top2分别为栈1和栈2的栈顶元素下标,则栈1为空的条件为(___________),栈2为空的条件为(___________),栈1或栈2满的条件为(___________)。
答案:top1==-1 top2==100 top1+1==top2(4)一个队列的入队顺序是1234,则队列的输出顺序是(___________)。
答案:1234(5)设循环队列数组大小为100,队头指针为front,队尾指针为rear;约定front指向队头元素的前一个位置,该位置永远不存放数据。
则入队操作时,修改rear=(___________),出队操作修改front=(___________),队空的判别条件为(___________),队满的判别条件为(___________)。
若front=20,rear=60,则队列长度为(___________),若front=60,rear=20,则队列长度为(___________)。
答案:(rear+1)%100 (front+1)%100 rear==front (rear+1)%100=front 40 60(6)朴素模式匹配算法中,每个串的起始下标均为1,变量i=100,j=10,分别表示主串和模式串当前比较的字符元素下标,若本次比较两字符不同,则i回溯为(___________),j 回溯为(___________)。
2021数据结构作业3 树与二叉树 参考答案
2021数据结构作业3 树与二叉树参考答案2021数据结构作业3-树与二叉树-参考答案作业3.树非编程作业:1.请分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。
参考答案:具备3个结点的树:具有3个结点的二叉树:2.未知二叉树的先序结点序列就是eabdcfhgikj,中序结点序列就是abcdefghijk,请构造二叉树,并写出其层次遍历序列和后序遍历序列。
参考答案:eaf层次:eafbhdgickjbh后序---cdbagjkihfedcgikj3.将下图所示的森林转换成一棵二叉树。
agkbcdhijlef参考答案:转换成的二叉树为:abcdghikljef4.将下图所示的二叉树还原成树或森林。
abcdlfeghmknji参考答案:切换为森林:aegbcdfhijlmnk5.假设用于通信的电文由7个字母组成{a,b,c,d,e,f,g},字母在电文中出现的频率分别为0.17、0.09、0.12、0.06、0.32、0.03、0.21。
精义这7个字母设计哈夫曼编码,并排序其有向路径长度wpl。
参考答案:哈夫曼树为:0.1810.39g0.610.210.290.32e0.17a0.090.09b0.12wpl=4*(0.03+0.06)+3*(0.12+0.17+0.09)+2*(0.32+0.21)=2.56a:101b:001c:100d:0001e: 11f:0000g:01编程作业:二叉树采用二叉链表存储,试设计算法实现:1.createbt(bitree&t):从键盘输入二叉树的先序结点序列字符串(以”#”代表空结点),创建其二叉链表;如输入:ab#d##ce#f###则建立如下图所示二叉树的二叉链表2.exchangebt(bitreet):设计递归算法实现二叉树中所有结点的左右孩子交换;3.countleaf(bitreet,telemtypex,int&count):统计数据以值x的结点为根的子树中叶子结点的数目;4.dispbitree(bitreet,intlevel):按树状打印二叉树。
数据结构(山东联盟-青岛大学)知到章节答案智慧树2023年
数据结构(山东联盟-青岛大学)知到章节测试答案智慧树2023年最新第一章测试1.在Data_Structure=(D,R)中,D是()的有限集合。
参考答案:数据元素2.计算机所处理的数据一般具有某种关系,这是指()。
参考答案:数据元素与数据元素之间存在的某种关系3.算法的时间复杂度与()有关。
参考答案:问题规模4.以下关于数据结构的说法正确的是()。
参考答案:数据结构的逻辑结构独立于其存储结构5.某算法的时间复杂度是O(n2),表明该算法()。
参考答案:执行时间与n^2成正比6.从逻辑上可将数据结构分为()。
参考答案:线性结构和非线性结构7.数据的逻辑结构是指各数据元素之间的逻辑关系,是用户按使用需要建立的。
参考答案:对8.数据的物理结构是指数据结构在计算机内的实际存储形式。
参考答案:对9.每种数据结构都具备三种基本运算:插入、删除和查找。
参考答案:错10.算法的时间效率和空间效率往往相互冲突,有时很难两全其美。
参考答案:对第二章测试1.线性表是一个()。
参考答案:数据元素的有限序列,元素不可以是线性表2.以下关于线性表的说法中正确的是()。
参考答案:除第一个元素和最后一个元素外,其他每个元素有且仅有一个直接前趋元素和一个直接后继元素3.以下关于线性表的说法中正确的是()。
参考答案:每个元素最多有一个直接前趋和一个直接后继4.如果线性表中的表元素既没有直接前趋,也没有直接后继,则该线性表中应有()个表元素。
参考答案:15.在线性表中的每一个表元素都是数据对象,它们是不可再分的()。
参考答案:数据元素6.顺序表是线性表的()表示。
参考答案:顺序存储7.以下关于顺序表的说法中正确的是()。
参考答案:顺序表和一维数组一样,都可以按下标随机(或直接)访问,顺序表还可以从某一指定元素开始,向前或向后逐个元素顺序访问8.顺序表的优点是()。
参考答案:存储密度(存储利用率)高9.以下关于单链表的叙述中错误的是()。
数据结构智慧树知到答案章节测试2023年上海海洋大学
第一章测试1.数据的()是面向计算机的。
A:物理结构B:线性结构C:数据结构D:逻辑结构答案:A2.()是组成数据的基本单位。
A:数据类型B:抽象数据类型C:数据元素D:数据项答案:C3.下面程序段的时间复杂度为:()A:O(1)B:O(n!)C:O(n)D:O(n2)答案:C4.一个算法的时间复杂度为(5n3+2nlog2n+4n+11)/(5n),其数量级表示为:()A:O(n)B:O(n2)C:O(nlog2n)D:O(log2n)答案:B5.关于算法的说法错误的是()A:算法应该具有确定性B:算法分析的主要目的是评价算法的效率C:算法必须在有限次数内完成D:算法就是程序答案:D第二章测试1.从一个具有n个结点的单链表中查找其值等于x的结点时,在查找不成功的情况下,需比较()个元素结点。
A:n/2B:(n+1)/2C:(n-1)/2D:n答案:D2.设单链表中结点的结构为(data,link),若要删除单链表中指针p指向结点的后一个结点(若存在),则需修改指针的操作为()。
A:p=p->Link;B:p=p->Link->Link;C:p->Link=p;D:p->Link=p->Link->Link;答案:D3.在等概率情况下,顺序表的插入操作要移动()表项。
A:四分之一B:三分之一C:全部D:一半答案:D4.在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行()。
A:p->next=HL; HL=p;B:HL=p; p->next=HL;C:p->next=HL->next; HL->next=p;D:p->next=HL; p=HL;答案:C5.对线性表,在下列哪种情况下应当采用链表表示?()A:经常需要随机地存取元素B:表中元素需要占据一片连续的存储空间C:经常需要进行插入和删除操作D:表中元素的个数不变答案:C第三章测试1.一个栈的输入序列为1 2 3,则下列序列中不可能是栈的输出序列的是()A:3 1 2B:3 2 1C:2 3 1D:1 2 3答案:A2.栈和队列的共同特点是()。
数据结构(天津大学)知到章节答案智慧树2023年
数据结构(天津大学)知到章节测试答案智慧树2023年最新第一章测试1.数据的存储结构是指()参考答案:数据的逻辑结构在计算机中的表示2.算法的空间复杂度是指()参考答案:算法执行过程中所需要的存储空间3.下列叙述中正确的是()参考答案:一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率4.程序执行的效率与数据的存储结构密切相关。
参考答案:对5.算法计算量的大小称为计算的()参考答案:复杂性6.算法的优劣与算法描述语言无关,但与所用计算机有关。
参考答案:错7.抽象数据类型可通过固有的数据类型来表示和实现。
参考答案:对8.算法是指令的有限序列。
参考答案:对9.数据的不可分割的最小单位是数据元素。
参考答案:错第二章测试1.下述哪个是顺序存储结构的优点?()参考答案:存储密度大2.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。
参考答案:顺序表3.设线性表有n个元素,以下操作中在顺序表上实现比在链表上实现效率更高是()参考答案:输出第i(1≤i≤n)个元素的值4.在n个结点的线性表的顺序实现中,算法的时间复杂度为O(1)的操作是()。
参考答案:访问第i个结点和求第i个结点的直接前驱5.循环链表H尾结点p的特点是()。
参考答案:p->next==H6.向一个长度为n的顺序表中的第i个元素之前插入一个元素时,需要向后移动()个元素。
参考答案:n-i+17.在一个长度为n的顺序表中删除第i个元素时,需要向前移动()个元素。
参考答案:n-i8.链表的每个结点中都只包含一个指针。
参考答案:错9.链表的物理存储结构具有同链表一样的顺序。
参考答案:错10.当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动。
参考答案:错第三章测试1.对于栈操作数据的原则是()。
参考答案:后进先出2.队列的先进先出特征是指()。
参考答案:最后插入队列的元素总是最后被删除3.栈和队列的共同点是()。
《数据结构》各章课后作业答案
《数据结构》各章课后作业答案 第一章 绪论课后作业答案1. 简述线性结构与非线性结构的不同点。
答:线性结构反映结点间的逻辑关系是一对一的,非线性结构反映结点间的逻辑关系是多对多的。
2.分析下面各程序段的时间复杂度(每小题5分,共20分)解:1.第一个for 循环执行n+1次,第二个for 循环执行n(m+1)次,A[i][j]=0;语句执行n*m 次,此程序段总的执行次数为n+1+n*(m+1)+n*m=2nm+2n+1次。
故时间复杂度为O(n*m)。
2.算法的时间复杂度是由嵌套最深层语句的执行次数决定的,本程序段嵌套最深层语句为:s+=B[i][j];它的执行次数为n 2,所以本程序段的时间复杂度是O(n 2)。
3. 该算法的基本操作是语句x++, 其语句频度为:1111n n i i j --==∑∑=10()n i n i -=-∑=(1)2n n - 所以本程序段的时间复杂度是O(n 2)。
4.设语句执行m 次,则有3m≤n ⇒m ≤log 3n所以本程序段的时间复杂度为O(log 3n)。
第二章 线性表课后作业答案1. 填空题。
(1)在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与表长和该元素在表中的位置有关。
(2)线性表中结点的集合是 有限 的,结点间的关系是 一对一的。
(2)s=0;for (i=0; i<n; i++)for(j=0; j<n; j++) s+=B[i][j]; sum=s; 答:O (n 2)(1) for (i=0; i<n; i++) for (j=0; j<m; j++) A[i][j]=0;(3) x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(4)i=1;while(i<=n)i=i*3;(3)向一个长度为n的向量的第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动 n-i+1 个元素。
数据结构智慧树知到答案章节测试2023年商丘工学院
第一章测试1.数据对象就是一组任意数据元素的集合。
()A:错B:对答案:A2.数据的运算描述是定义在数据的逻辑结构上的。
()A:错B:对答案:B3.算法是由若干条指令组成的有穷序列,而一个程序不一定满足有穷性。
()A:错B:对答案:B4.以下具有相同特性数据元素的集合,是数据的子集的是()。
A:数据对象B:数据C:数据结构D:数据符号答案:A5.下面不是算法所必须具备的特性的是()。
A:确定性B:有穷性C:高效性D:可行性。
答案:C第二章测试1.链表中的头结点仅起到标识的作用。
()A:错B:对答案:A2.对链表进行插入和删除操作时不必移动链表中结点。
()A:对B:错答案:A3.非空的双向链表中任何结点的前驱指针均不为空。
()A:对B:错答案:B4.设一条单链表的头指针变量为head且该链表没有头结点,则其判空条件是()。
A:head.next==headB:head!=nullC:head==nullD:head.next==null答案:C5.若一个线性表中最常用的操作是取第i个元素和找第i个元素的前趋元素,则采用()存储方式最节省时间。
A:单循环链表B:双链表C:单链表D:顺序表答案:D第三章测试1.一个栈的输入序列是12345,则栈的输出序列不可能是12345。
()A:错B:对答案:A2.栈和队列的存储方式既可是顺序方式,也可是链接方式。
()A:对B:错答案:A3.队是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。
()A:错B:对答案:A4.栈和队列的共同点是()。
A:都是先进后出B:都是先进先出C:没有共同点D:只允许在端点处插入和删除元素答案:D5.一个初始输入序列1,2,…,n,出栈序列是p1,p2,…,pn,若p1=4,则p2的可能取值个数为()。
A:nB:n-3C:n-2答案:B第四章测试1.空串的长度为0。
()A:错B:对答案:B2.设串s=“I am a student”,则串长为()。
数据结构智慧树知到答案章节测试2023年上海电力大学
第一章测试1.数据结构中,与所使用的计算机无关的是数据的( ) 结构。
A:存储B:逻辑C:物理D:物理和存储答案:B2.从逻辑上可以把数据结构分为()两大类。
A:顺序结构、链式结构B:线性结构、非线性结构C:初等结构、构造型结构D:动态结构、静态结构答案:B3.算法分析的目的是()A:分析算法的效率以求改进B:找出数据结构的合理性C:分析算法的易懂性和文档性D:研究算法中的输入和输出的关系答案:A4.一个”好”的算法应达到的目标有( )。
A:高时间效率和低存储率B:正确性C:可读性D:健壮性答案:ABCD5.健壮的算法不会因非法的输入数据而出现莫名其妙的状态。
A:错B:对答案:B6.数据的逻辑结构和数据的存储结构是相同的。
A:错B:对答案:A7.算法的实现依赖于数据的逻辑结构。
A:错B:对答案:A8.算法是对解题方法和步骤的描述。
A:对B:错答案:A9.链式存储结构所占存储空间()。
A:分两部分,一部分存放结点的值,另一个部分存放表示结点间关系的地址。
B:只有一部分,存储表示结点间关系的地址。
C:只有一部分,存放结点的值。
D:分两部分,一部分存放结点的值,另一部分存放结点所占存储单元值。
答案:A10.下列时间复杂度中最坏的是()。
A:O( logn)B:O(n2)C:O(n)D:O(1)答案:B第二章测试1.在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是:A:将n个结点从小到大排序B:访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)C:在第i个结点后插入一个新结点(1≤i≤n)D:删除第i个结点(1≤i≤n)答案:B2.链式存储结构的最大优点是A:存储密度高B:便于进行插入和删除操作C:便于随机存取D:无需预分配空间答案:B3.假设在顺序表{a0,a1,……,an-1}中,每一个数据元素所占的存储单元的数目为4,且第0个数据元素的存储地址为100,则第7个数据元素的存储地址是A:106B:128C:124D:107答案:B4.在一个单链表中的p和q两个结点之间插入一个新结点,假设新结点为s,则修改链的java语句序列是A:s.next=p;p.next=q;B:p.next=q;q.next=s;C:s.next=q;p.next=s;D:q.next=p;p.next=s;答案:C5.顺序存储方式的优点是存储密度大,且插入、删除运算效率高A:错B:对答案:A6.在单链表中,增加一个头结点的目的是为了A:方便运算的实现B:使单链表至少有一个结点C:标识表结点中首结点的位置D:说明单链表是线性表的链式存储答案:A7.一维数组第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是A:108B:110C:120D:100答案:A8.链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移动A:错B:对答案:A9.链表的每个结点中都恰好包含一个指针A:对B:错答案:B10.顺序存储方式只能用于存储线性结构A:对B:错答案:B第三章测试1.若将整数1、2、3、4依次进栈,则不可能得到的出栈序列是A:1234B:4321C:1324D:1423答案:D2.在顺序栈中,若栈顶指针top指向栈顶元素的下一个存储单元,且顺序栈的最大容量是maxSize,则顺序栈的判空条件是A:top==maxSize-1B:top==-1C:top==maxSizeD:top==0答案:D3.在循环顺序队列中,假设以少用一个存储单元的方法来区分队列判满和判空的条件,front和rear分别为队首和队尾指针,front指向队首元素,rear 指向队尾元素的下一个存储单元,队列的最大存储容量为maxSize,则队列的判满条件是A:front==rear+1B:front==(rear+1)% maxSizeC:front!=rearD:front==rear答案:B4.在链栈中,进行出栈操作时A:需要判断栈是否为空B:无需对栈作任何差别C:需要判断栈是否满D:需要判断栈元素的类型答案:A5.栈和队列是一种非线性数据结构A:错B:对答案:A6.在循环顺序队列中,假设以少用一个存储单元的方法来区分队列判满和判空的条件,front和rear分别为队首和队尾指针,它们分别指向队首元素和队尾元素的下一个存储单元,队列的最大存储容量为maxSize,则队列的判空条件是A:front==(rear+1)% maxSizeB:front==rear+1C:front!=rearD:front==rear答案:D7.循环顺序队列是将顺序队列的存储区域看成是一个首尾相连的环,首尾相连的状态是通过数学上的哪种运算实现的?A:求余B:求和C:减运算D:除运算答案:A8.设数组Data[0..m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作的语句为A:front=(front+1)% mB:front=front+1C:front=(front+1)%(m+1)D:rear=(rear+1)%m答案:C9.假定利用数组a[n]顺序存储一个栈,用top表示栈顶指针,top==-1表示栈空,并已知栈未满,当元素x进栈时所执行的操作为A:a[top–]=xB:a[++top]=xC:a[–top]=xD:a[top++]=x答案:B10.在不带表头结点的链栈中,若栈顶指针top直接指向栈顶元素,则将一个新结点p入栈时修改链的两条对应语句为A:top=p;p.next=top;B:p.next=top;top=p;C:p=top;top.next=p.next;D:top.next=p;p=top;答案:B第四章测试1.下面关于串的叙述中,哪一个是不正确的?( )A:串既可以采用顺序存储,也可以采用链式存储B:空串是由空格构成的串C:模式匹配是串的一种重要运算D:串是字符的有限序列答案:B2.串的长度是指( )A:串中包含的不同字符个数B:串中除空格以外的字符个数C:串中包含的不同字母个数D:串中包含的字符个数答案:D3.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为( )A:联接B:求子串C:求串长D:模式匹配答案:D4.设主串的长度为n,模式串的长度为m,则串匹配的KMP算法时间复杂度是( )A:O(n×m)B:O(n)C:O(m)D:O(n + m)答案:D5.串也是一种线性表,只不过( )A:数据元素均为字符B:数据元素是子串C:表长受到限制D:数据元素数据类型不受限制答案:A6.一个串的任意连续字符组成的子序列称为串的子串,该串称为主串。
数据结构第三章习题答案
判断回文palindrome:#include <iostream>#include <string>using namespace std;bool huiwen(string s){int n=s.length();int i,j;i= 0;j=n-1;while(i<j && s[i]==s[j]){ i++;j--;}if(i>=j) return true;else return false;}int main(){string s1;cin>>s1;cout<<huiwen(s1);return 0;}=============(2)设从键盘输入一整数的序列:a1, a2, a3,…,an,试编写算法实现:用栈结构存储输入的整数,当ai≠-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。
算法应对异常情况(入栈满等)给出相应的信息。
#include <iostream>using namespace std;#define OVERFLOW -2#define OK 1#define ERROR 0typedef int SElemType;typedef int Status;typedef struct {SElemType a[5];int top;} SqStack;Status InitStack(SqStack &S){S.top=0;return OK;}Status Push(SqStack &S,SElemType e){if (S.top>4){cout<<"overlow!"<<endl;return ERROR;}else S.a[S.top++]=e;return OK;}Status Pop(SqStack &S,SElemType &e){ if (S.top==0) {cout<<"underflow"<<endl; return ERROR;}e=S.a[--S.top];cout<<e<<endl;return OK;}int main(){ SqStack s;InitStack(s);int n,x,e1;cout<<"n=?"<<endl;cin>>n;for(int i=0;i<n;i++){ cin>>x;if(x!=-1 )Push(s,x);else Pop(s,e1); }return 0;}============(3)假设以I和O分别表示入栈和出栈操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构与算法上机作业第三章树一、选择题1、在一棵树中,如果结点A有3个兄弟,B是A的双亲,则B的度为 DA. 1B. 2C. 3D. 42、深度为h的完全二叉树至少有 D 个结点,至多有 B 个结点A. 2hB. 2h-1C. 2h+1D. 2h-13、具有n个结点的满二叉树有 C 个叶结点。
A. n/2B. (n-1)/2C. (n+1)/2D. n/2+14、一棵具有25个叶结点的完全二叉树最多有 C 个结点。
A. 48B. 49C. 50D. 515、已知二叉树的先根遍历序列是ABCDEF,中根遍历序列是CBAEDF,则后根遍历序列是 A 。
A. CBEFDAB. FEDCBAC. CBEDFAD. 不定6、具有10个叶结点的二叉树中有 B 个度为2的结点。
A. 8B. 9C. 10D. 117、一棵非空二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足 C 。
A. 所有非叶结点均无左孩子B. 所有非叶结点均无右孩子C. 只有一个叶子结点D. A和B同时成立8、在线索二叉树中,t所指结点没有左子树的充要条件是 B 。
A. t->left=NULLB. t->ltag=TRUEC. t->ltag=TRUE且t->left=NULLD. 以上都不对9、n个结点的线索二叉树上含有的线索数为 C 。
A. 2nB. n-1C. n+1D. n10、二叉树按照某种顺序线索化后,任一结点都有指向其前驱和后继的线索,这种说法 B 。
A. 正确B. 错误C. 不确定D. 都有可能11、具有n(n>1)个结点的完全二叉树中,结点i(2i>n)的左孩子结点是 D 。
A. 2iB. 2i+1C. 2i-1D. 不存在12、具有64个结点的完全二叉树的深度为 C 。
A. 5B. 6C.7D. 813、将一颗有100个结点的完全二叉树从上到下、从左到右一次对结点进行编号,根结点的编号为1,则编号为45的结点的右孩子的编号为 D 。
A. 46B. 47C. 90D. 9114、在结点数为n的堆中插入一个结点时,复杂度为 C 。
A. O(n)B. O(n2)C. O(log2n)D. O(log n2)15、两个二叉树是等价的,则它们满足 D 。
A. 它们都为空B. 它们的左右子树都具有相同的结构C. 它们对应的结点包含相同的信息D. A、B和C16、包含n个元素的堆的高度为 C 。
(符号「a表示取不小a最小整数)A. nB. 「log2nC. 「log2(n+1)D. n+117、以下说法错误的是 B 。
A. 存在这样的二叉树,对其采用任何次序的遍历其结点访问序列均相同B. 二叉树是树的特殊情形C. 由树转换成二叉树,其根结点的右子树总是空的D. 在二叉树中只有一棵子树的情形下,也要指出是左子树还是右子树18、设F是一个森林,B是由F变换得到的二叉树。
若F中有n个非终端结点,则B中没有右孩子的结点有 C 个。
A. n-1B. nC. n+1D. n+219、将一棵树T转换为二叉树B,则T的后根序列是B的 B 。
A. 先根序列B. 中根序列C. 后根序列D. 层次序列20、将一棵树转换为二叉树后,这颗二叉树的形态是 B 。
A. 唯一的,根结点没有左孩子B. 唯一的,根结点没有右孩子C. 有多种,根结点都没有左孩子D. 有多种,根结点都没有右孩子21、设树T的度为4,其中度为1, 2, 3, 4的结点个数分别为4, 2, 1, 1,则T中的叶结点的个数为 D 。
(提示:分支数:4*1+2*2+3*1+4*1=15,结点数:15+1=16,非叶结点数:4+2+1+1=8,叶节点数:16-8)A. 5B. 6C. 7D. 822、设森林F中有三棵树,第一、第二、第三棵树的结点个数分别为M1, M2, M3。
与森林F对应的二叉树根结点的右子树上的结点个数为 D 。
A. M1-1B. M1+M2C. M2D. M2+M323、若以二叉树的任一结点出发到根的路径上所经过的结点序列按其关键字有序,则该二叉树是 A 。
A. 二叉排序树B. 哈夫曼树C. 堆D. 线索二叉树24、用5个权值{3, 2, 4, 5, 1}构造的哈夫曼树的带权路径长度是 B 。
A. 32B. 33C. 34D. 15二、填空题1、一棵二叉树有67个结点,结点的度是0和2。
问这棵二叉树中度为2的结点有33 个。
2、含A, B, C三个结点的不同形态的二叉树有30 棵。
(提示:h(n)*3!,其中,h(n)为卡特兰数)3、含有4个度为2的结点和5个叶子结点的完全二叉树,有0或1 个度为1的结点。
4、具有100个结点的完全二叉树的叶子结点数为49 。
5、在用左右链表示的具有n个结点的二叉树中,共有2*n 个指针域,其中n-1 个指针域用于指向其左右孩子,剩下的n+1 个指针域是空的。
6、如果一颗完全二叉树的任意一个非终结结点的元素都不小于其左儿子结点和右儿子结点(如果有的话)的元素,则称此完全二叉树为最大堆。
7、堆是一种特殊形式的完全二叉树,对于最大堆而言,其根结点的元素的值应该是所有结点元素中最大的。
8、二叉树的复制是指按照一棵已知的二叉树复制一个副本,使两者为等价二叉树(结构相同且相应结点上的元素值相同)。
复制二叉树最长用的方法是递归。
9、在定义堆时,通常采用数组方式定义相应的二叉树,这样可以很容易实现其相关操作。
10、在构建选择树时,根据孩子结点的获胜者确定他们双亲结点所得到的选择树称为胜者树。
根据孩子结点的失败者确定他们双亲结点所得到的选择树称为败者树。
11、树的表示方法包括数组表示法、邻接表表示法和左右链表示法。
12、表达式(a+b*(c-d))-e/f的波兰式(前缀式)是-+a*b-cd/ef ,逆波兰式(后缀式)是cd-b*a+ef/- 。
13、设F是由T1、T2、T3三棵树组成的森林,与F对应的二叉树为B。
已知T1, T2, T3的结点数分别为n1, n2和n3,则二叉树B的左子树中有n1-1 个结点,二叉树B的右子树中有n2+n3 个结点。
14、设二叉树的中根序列为ABCDEFG,后根序列为BDCAFGE。
则该二叉树的先根序列为EACBDGF 。
该二叉树对应的森林中包含 2 棵树。
15、先根次序遍历森林等同于按先根遍历对应的二叉树,后根次序遍历森林等同与按中根遍历对应的二叉树。
16、一棵哈夫曼树有19个结点,则其叶子结点的个数为10 。
(提示:哈夫曼树为二叉树,且没有度为1的结点)17、设有数据WG={7, 19, 2, 6, 32, 3, 21, 10}叶节点权重集合,则所构建哈夫曼树的高是6 ,带权路径长度WPL为261 。
18、设有一份电文中共使用6个字符a, b, c, d, e, f,其中出现频率依次为2,3,4,7,8,19,则字符c的哈夫曼编码是001 ,电文编码的总长度为96 。
20、在有n个结点的哈夫曼树中,叶子结点总数为(n+1)/2 ,非叶结点的总数为(n-1)/2 。
三、试分别画出具有4个结点的二叉树的所有不同形态。
共14个(h(4))四、已知一棵二叉树的中根序列和后根序列分别是BDCEAHFG和DECBHGFA,请画出此二叉树。
五、已知非空二叉树T,写一个算法,求度为2的结点的个数。
要求:1、定义二叉树的抽象数据类型和型BTREE,并定义基本操作。
2、编写函数count2(BTREE T),返回度为2的节点的个数。
3、在主函数中,构建一个二叉树,并验证所编写的算法。
六、用递归方法写一个算法,求二叉树的叶子结点数int leafnum(BTREE T)。
要求:1、定义二叉树的抽象数据类型和型BTREE,并定义基本操作。
2、编写函数leafnum(BTREE T),返回树T的叶子节点的个数。
在主函数中,构建一个二叉树,并验证所编写的算法。
七、画出下图所表示的二叉树的中序线索二叉树和先序线索二叉树。
八、已知二叉树的先根序列是AEFBGCDHIKJ,中根序列是EFAGBCHKIJD,画出此二叉树,并画出后序线索二叉树。
九、在中序线索二叉树中插入一个结点Q作为树中某个结点P的左孩子以及插入一个结点Q作为某个结点P的右孩子,试给出相应的算法。
要求:1、定义中序线索二叉树的型THTREE以及基本操作。
2、定义函数void LInsert(THTREE P, THTREE Q); 和void Insert(THTREE P, THTREEQ),实现题目要求的操作。
在主函数中,利用操作RInsert和LInsert构造一个线索二叉树,并中序输出二叉树的结点的元素,验证结果。
十、假设现在有如下的元素:7、16、49、82、5、31、6、2、44。
画出将每一个元素插入堆中以后的最大堆。
要求:利用基本操作Insert的基本原理,先用第一个元素7构成一个二叉树,然后将第二个元素16插入该二叉树中,再将第三个元素49插入堆中,……,直到最后一个元素插入为止。
上述过程要求画图完成。
十一、编写一个函数,在最大堆中查找任意元素,并分析其时间复杂度。
要求:1、定义最大堆的型HEAP及其基本操作。
2、定义函数int Find(HEAP H, Elementtype e, int start),查找e是否为堆的元素(从根节点为start的子堆开始查找),如果是,返回该元素在堆中的位置,如果不是,返回0。
(提示:利用最大堆的元素特点进行查找,可降低复杂度)在主函数中首先构建一个最大堆,然后验证所构造的函数。
十二、给定叶子结点的权值集合{15, 3,14, 2, 6, 9, 16, 17},构造相应的哈夫曼树,并计算其带权路径长度。
十三、已知n=9和一组等价关系:1≡5、6≡8、7≡2、9≡8、3≡7、4≡2、9≡3试应用抽象数据类型MFSET设计一个算法,按输入的等价关系进行等价分类。
十四、画出下图所示的森林经转换后所对应的二叉树,并指出在二叉树中某结点为叶子结点时,所对应的森林中结点应满足的条件。
十五、已知森林F的先根序列为:ABCDEFGHIJKL,后根序列为:CBEFDGAJIKLH,试画出森林F。
提示:先画出森林F所对应的二叉树B,然后再将B转换为森林。
十六、画出表达式(A+B*C/D)*E+F*G所对应的树结构,并写出该表达式的波兰表示式和逆波兰表示式。
十七、利用逆波兰表达式求一个四则混合元算的值。
具体要求:1、定义二叉树的型BTREE和位置的型position。
2、实现二叉树的基本操作。
3、实现将一个四则混合运算转换成二叉树的函数:BTREE convert(char *express),其中参数express为四则混合运算表达式,返回值为生成的树。