




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构复习题(二叉树)一.判断题(下列各题,正确的请在前面的括号内打√;错误的打╳)(√)(1)树结构中每个结点最多只有一个直接前驱。(ㄨ)(2)完全二叉树一定是满二查树。(ㄨ)(3)在中序线索二叉树中,右线索若不为空,则一定指向其双亲。(√)(4)一棵二叉树中序遍历序列的最后一个结点,必定是该二叉树前序遍历的最后一个结点。(√)(5)二叉树的前序遍历中,任意一个结点均处于其子女结点的前面。(√)(6)由二叉树的前序遍历序列和中序遍历序列,可以推导出后序遍历的序列。(√)(7)在完全二叉树中,若一个结点没有左孩子,则它必然是叶子结点。(ㄨ)(8)在哈夫曼编码中,当两个字符出现的频率相同,其编码也相同,对于这种情况应该做特殊处理。(ㄨ)(9)含多于两棵树的森林转换的二叉树,其根结点一定无右孩子。(√)(10)具有n个叶子结点的哈夫曼树共有2n-1个结点。二.填空题在树中,一个结点所拥有的子树数称为该结点的度。度为零的结点称为叶(或叶子,或终端)结点。树中结点的最大层次称为树的深度(或高度)。对于二叉树来说,第i层上至多有2i-1个结点。深度为h的二叉树至多有2h-1个结点。由一棵二叉树的前序序列和中序序列可唯一确定这棵二叉树。有20个结点的完全二叉树,编号为10的结点的父结点的编号是5。哈夫曼树是带权路径长度最小的二叉树。由二叉树的后序和中序遍历序列,可以唯一确定一棵二叉树。某二叉树的中序遍历序列为:DEBAC,后序遍历序列为:EBCAD。则前序遍历序列为:DABEC。设一棵二叉树结点的先序遍历序历为:ABDECFGH,中序遍历序历为:DEBAFCHG,则二叉树中叶结点是:E、F、H。已知完全二叉树的第8层有8个结点,则其叶结点数是68。由树转换成二叉树时,其根结点无右子树。采用二叉链表存储的n个结点的二叉树,一共有2n个指针域。采用二叉链表存储的n个结点的二叉树,共有空指针n+1个。前序为A,B,C且后序为C,B,A的二叉树共有4种。AACBABCABCACB(17)三个结点可以组成2种不同形态的树。(18)将一棵完全二叉树按层次编号,对于任意一个编号为i的结点,其左孩子结点的编号为:2*i。(19)给定如下图所示的二叉树,其前序遍历序列为:ABEFHCG。AABFGHDCE(20)给定如下图所示的二叉树,其层次遍历序列为:ABCEFGH。AABFGHDCE三.选择题(1)树最适合用来表示(D)。A.有序数据元素B.无序数据元素C.元素之间无联系的数据D.元素之间有分支的层次关系(2)前序为A,B,C的二叉树共有(D)种。A.2 B.3 C.4 D(3)根据二叉树的定义,具有3个结点的二叉树有(C)种树型。A.3 B.4 C.5 D.6(4)在一棵具有五层的满二叉树中,结点的总数为(B)A.16B.31C.32D.33(5)具有64个结点的完全二叉树的深度为(C)A.5 B.6 C.7 D.(6)任何一棵二叉树的叶结点在前序、中序、后序遍历序列中的相对次序(A)。A.不发生改变B.发生改变C.不能确定D.以上都不对(7)A,B为一棵二叉树上的两个结点,在中序遍历时,A在B前的条件是(C)。A.A在B右方B.A是B祖先C.A在B左方D.A是B子孙(8)下列4棵树中,(B)不是完全二叉树。A.B.C.D.ABECABECDABCDABEFCDABEGFDCD(9)如右图所示的二叉树,后序遍历的序列是(D)ABADECFGHIA.A、B、C、D、ABADECFGHIB.A、B、D、H、I、E、C、F、GC.H、D、I、B、E、A、F、C、GD.H、I、D、E、B、F、G、C、A(10)对于下边的二叉树,其中序序列为(A)A.DBEHAFCGB.DBHEAFCGC.ABDEHCFGD.ABCDEFGH(11)某二叉树的后序遍历序列为:DABEC,中序遍历序列为:DEBAC,则前序遍历序列为(D)。A.ACBED B.DECAB C.DEABCD.CEDBA(12)具有n(n>1)个结点的完全二叉树中,结点i(2i>n)的左孩子结点是(D)。A.2i B.2i+1 C.2i-1 D.不存在(若2i<=n,则答案为A)(13)把一棵树转换为二叉树后,这棵二叉树的形态是(A)。A.唯一的B.有多种C.有多种,但根结点都没有左孩子D.有多种,但根结点都没有右孩子(14)将一棵有100个结点的完全二叉树从上到下,从左到右依次对结点编号,根结点的编号为1,则编号为45的结点的左孩子编号为(B)。A.46 B.47 C.90 D(15)将一棵有100个结点的完全二叉树从上到下,从左到右依次对结点编号,根结点的编号为1,则编号为49的结点的右孩子编号为(B)。A.98 B.99 C.50 D.100(16)二叉树按某种顺序线索化后,任一结点均有指向其前驱和后继的线索,这种说法(B)。A.正确B.错误 C.不确定D.都有可能(17)下列陈述正确的是(D)。A.二叉树是度为2的有序树 B.二叉树中结点只有一个孩子时无左右之分C.二叉树中必有度为2的结点 D.二叉树中最多只有两棵子树,且有左右子树之分(18)用5个权值{3,2,4,5,1}构造的哈夫曼树的带权路径长度是(B)。A.32B.33C.34D.15(先构造哈夫曼树,WPL=(1+2)*3+(3+4+5)*2=33)(19)在树结构中,若结点B有4个兄弟,A是B的父亲结点,则A的度为为(C)。A.3B.4C.5(20)二叉树的叶结点个数比度为2的结点的个数(C)。A.无关 B.相等 C.多一个 D.少一个四.简答题1.已知一棵树边的集合如下,请画出此树,并回答问题。{(L,M),(L,N),(E,L),(B,E),(B,D),(A,B),(G,J),(G,K),(C,G),(C,F),(H,I),(C,H),(A,C)}(1)哪个是根结点?(2)哪些是叶结点?(3)哪个是G的双亲?(4)哪些是G的祖先?(5)哪些是G的孩子?(6)哪些是E的子孙?(7)哪些是E的兄弟?哪些是F的兄弟?(8)结点B和N的层次各是多少?(9)树的深度是多少?(10)以结点C为根的子树的深度是多少?(11)树的度数是多少?答:(1)A是根结点。(2)叶结点:M,N,D,J,K,F,I。(3)G的双亲:C。(4)G的祖先:A,C。(5)G的孩子:J,K。(6)E的子孙:L,M,N。(7)E的兄弟:D;F的兄弟:G,H。(8)结点B的层次为2;结点N的层次是5。(9)树的深度是5。(10)以结点C为根的子树的深度是3。(11)树的度数是3。2.设下列二叉树是与某森林对应的二叉树,试回答下列问题。DADABEGICFHJLK (2)每一棵树的根结点分别是什么? (3)第一棵树有几个结点? (4)第二棵树有几个结点? (5)森林中有几个叶结点?解:(1)4(2)A,C,G,K(3)6(4)2(5)73.二叉树按中序遍历的结果为:ABC,试问有几种不同形态的二叉树可以得到这一遍历结果?并画出这些二叉树。答:(1)5种。ABABCAADCBBABCACCB4.分别画出具有3个结点的树和三个结点的二叉树的所有不同形态。答:三个结点的树三个结点的二叉树树五.应用题1.已知一棵二叉树的后序遍历和中序遍历的序列分别为:A,C,D,B,G,I,H,F,E和A,B,C,D,E,F,G,H,I。请画出该二叉树,并写出它的前序遍历的序列。BCHDDBCHDDFGEIA其前序遍历的序列为:EBADCFHGI2.已知一棵二叉树的前序遍历和中序遍历的序列分别为:A,B,D,G,H,C,E,F,I和G,D,H,B,A,E,C,I,F。请画出此二叉树,并写出它的后序遍历的序列。。GHAGHABDCEFI其后序遍历的序列为:GHDBEIFCA3.已知一棵树的层次遍历的序列为:ABCDEFGHIJ,中序遍历的序列为:DBGEHJACIF,请画出该二叉树,并写出它的后序遍历的序列。ABABCHDDFGEIJ后序遍历的序列:DGJHEBIFCA4.把下列一般树转换为二叉树1212435678AABFEGHIJCD124124688D537ABCHDDFGEIJ(1)(2)5.把下列森林转换为二叉树FGKFGKIJHACBDEKAKABCHDDFGEIJ6.把下列二叉树还原为森林AADBICHFGE解:还原后的二叉树为:AABCHDDFGEI7.某二叉树的结点数据采用顺序存储,其结构如下:1234567891011121314151617181920EAFDHCGIB(1)画出该二叉树(3分)(2)写出按层次遍历的结点序列(2分)解:ADADHFGECBI(2)层次遍历的结点序列:EAFDHCGIB8.某二叉树的存储如下:12345678910lchild00237580101dataJHFDBACEGIrchild0009400000 其中根结点的指针为6,lchild、rchild分别为结点的左、右孩子的指针域,data为数据域。(1)画出该二叉树(3分)(2)写出该树的前序遍历的结点序列(2分)解:BDBDJHGACFEIABCEDFHGIJ9.给定如图所示二叉树T,请画出与其对应的中序线索二叉树。080828D25D33D40D60D08D54D55D3333解:(1)中序遍历序列:5540256028083354(2)中序线索二叉树:NULLNULLNULL0828D25D33D40D60D08D54D55D10.画出表达式:-A+B-C+D的标识符树,并求它们的后缀表达式。解:++¯+¯BDCAD0后缀表达式:0A–B+C–D+11.画出表达式:(A+B/C-D)*(E*(F+G))的标识符树,并求它们的后缀表达式。ABABC+DDFGE/+*¯*后缀表达式:ABC/+D–EFG+**12.对于算术表达式(A+B*C/D)*E+F*G,画出标识符树,并求它们的后缀表达式。解:**EGFD*B++*AD/C后缀表达式:ABCD/*+E*FG*+13.给定一个权集W={4,5,7,8,6,12,18},试画出相应的哈夫曼树,并计算其带权路径长度WPL。351325D126351325D12660181798D45791317253560WPL=(12+18)*2+(6+7+8)*3+(4+5)*4=15914.给定一个权集W={3,15,17,14,6,16,9,2},试画出相应的哈夫曼树,并计算其带权路径长度WPL。4917491733D1698229201514D56113D22369141516175293311204982WPL=(16+17)*2+(9+14+15)*3+6*4+(2+3)*5=22915.假设用于通信的电文仅由A、B、C、D、E、F、G8个字母组成,字母在电文中出现的频率分别为7,19,2,6,32,3,21,10。试为这8个字母设计哈夫曼编码。解:以权值:2、3、6、7、10、19、21、32构造哈夫曼树:6651911281740D213260D10000D023D710D0000011111101字母编号字母编号对应编码出现频率A10107B0019C100002D10016E1132D100013E0121F101110六.算法设计题以二叉链表为存储结构,设二叉树BT结构为:typedefstructBT{ chardata; BT*lchild; BT*rchild;}BT;1.求二叉树中的度数为2的结点。2.求二叉树中值为最大的元素。3.将二叉树各结点存储到一维数组中。4.前序输出二叉树中各结点及其结点所在的层号。5.求二叉树的宽度6.交换二叉树各结点的左右子树。7.写出在二叉树中查找值为x的结点在树中层数的算法。解:求二叉树中的度数为2的结点。voidcount(BTt){if(t){if(t->lchild&&t->rchild)k++;count(t->lchild);count(t->rchild);}}求二叉树中值为最大的元素。intmaxnode(BTt,intmax){if(t){if(t->data>max)max=t->data;max=maxnode(t->lchild,max);max=maxnode(t->rchild,max);}}3.将二叉树各结点存储到一维数组中。voidcreate(BTt,inta[],inti){if(t){a[i]=t->data;create(t->lchild,a,2*i);create(t->rchild,a,2*i+1);}}4.前序输出二叉树中各结点及其结点所在的层号。voidpreorderlevel(BTt,inth)//t的层数为h{if(t!=NULL){printf(“%d,%d”,t->data,h);preorderlevel(t->lchild,h+1);preorderlevel(t->rchild,h+1);}}求二叉树的宽度思想:按层遍历二叉树,采用一个队列q,让根结点入队列,最后出队列,若有左右子树,则左右子树根结点入队列,如此反复,直到队列为空。intWidth(BT*T){intfront=-1,rear=-1;//队列初始化intflag=0,count=0,p;//p用于指向树中层的最右边的结点,标志flag记录层中结点数的最大值if(T!=NULL){rear++;q[rear]=T;flag=1;p=rear;}while(front<p){front++;T=q[front];if(T->lchild!=NULL){rear++;q[rear]=T->lchild;count++;}if(T->rchild!=NULL){rear++;q[rear]=T->rchild;count++;}if(front==p) //当前层已遍历完毕{if(flag<count)flag=count;count=0;p=rear; //p指向下一层最右边的结点}} //endwhilereturn(flag);}6.解:借助栈来进行对换。Swap(BinTree*T){BinTree*stack[100],*temp;inttop=-1;root=T;if(T!=NULL){top++;stack[top]=T;while(top>-1){T=stack[top];top--;if(T->child!=NULL||T->rchild!=NULL){//交换结点的左右指针temp=T->lchild;T->lchild=T->rchild;T->rchild=temp;}if(T->lchild!=NULL){top++;stack[top]=T->lchild;}if(T->rchild!=NULL){top++;stack[top]=T->rchild;}}}}main(){intI,j,k,l;printf(“\n”);root=CreateBinTree();Inorder(root);i=CountNode(root);j=CountLeafs(root);k=Depth(root);l=Width(root);printf(“\nTheNode’sNumber:%d”,i);printf(“\nTheLeafs’sNumber:%d”,j);printf(“\nTheDepthis:%d”,k);printf(“\nThewidthis:%d”,l);Swap(root);Printf(“\nTheswapTreeis:”);Inorder(root);}7.解:inth=-1,lh=1,count=0;charx=’c’;//赋初值Level(BinTreeT,inth,intlh)//求X结点在树只的层树{if(T==Null)h=0;elseif(T->data==x){h=lh;count=h;}else{h++;Level(T->lchild,h,lh);if(h==-1)Level(T->rchild,h,lh);}}main(){BinTree*(*newroot);Printf(“\n”);Root=CreateBinTree();Inorder(root);Printf(“\n”);Level(root,h,lh);Printf(“%d”,count);}
模拟考题一.读程序,写出运行结果1.二叉树的结构如图所示,试写出执行下列算法后的输出结果:。(用大写的英文字母表示,字母之间不要任何间隔符号,最后一个字母后面也不要间隔符号)CFCFBDADGE{datatypedata;BT*lchild;BT*rchild;}BT;voidPreorder(BT*T){ if(T!=NULL){ cout<<T->data; Preorder(T->lchild); Preorder(T->rchild);}}解:ABCEDFG先序遍历2.二叉树的结构如图所示,试写出执行下列算法后的输出结果:。typedefstructBTCFCFBDADGEBT*lchild;BT*rchild;}BT;intBTD(BT*T){ intldep,rdep; if(T==NULL) return0; else {ldep=BTD(T->lchild); rdep=BTD(T->rchild); if(ldep>rdep) returnldep+1; else returnrdep+1;}}解:4(求二叉树深度)3.二叉树的结构如图所示,试写出执行下列算法后,count的值为多少?CFCFBDADGE{datatypedata;//定义结点BT*lchild;BT*rchild;}BT;intcount=0;voidLeafnum(BT*T){ if(T!=NULL){if(T->lchild==NULL&&T->rchild==NULL) count++; Leafnum(T->lchild); Leafnum(T->rchild);}}解:3(求叶结点数)(2,3,4改为程序填空)二.程序填空1.填空完成二叉树按层次遍历的程序typedefstructBT{datatypedata;//定义结点BT*lchild;BT*rchild;}BT;voidLevelorder(BT*T) //层次遍历{ inti,j; BT*q[100],*p; p=T; if(p!=NULL){i=1;q[i]=p;j=2;} while(i!=j){p=q[i];cout<<p->data; if(p->lchild!=NULL) {q[j]=p->lchild;j++;} if(p->rchild!=NULL) {q[j]=p->rchild;j++;} i++; }}}
三.应用题1.将下列二叉树转换为森林。DDABEGICFHJK解:DDABIHDECFGJK2.画出和下列二叉树相应的森林。DADABHCJEKGFIM(根右边的子树肯定是森林,而孩子结点的右子树均为兄弟)3.某二叉树的结点数据采用顺序存储,其结构如下:1234567891011121314151617181920EAFDHCGIB(1)画出该二叉树(2分)(2)写出结点值为D的父结点及左、右子树(3分)解:ADADHFGECBI(2)D的父结点为AD的左子树为CD的右子树为空4.某二叉树的存储如下:12345678910Lchild00237580101DataJHFDBACEGIRch
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年生猪出栏面试试题及答案
- 基坑沙土置换施工方案
- grc轻质隔墙施工方案
- 5年级说明文例文
- cba实验环境要求
- 单面墙模板施工方案
- 沥青路面灌缝施工方案
- 余江标识标牌施工方案
- 石笼挡墙施工方案
- 2025年新疆塔城地区单招职业倾向性测试题库必考题
- 2024行政执法人员考试题库及答案
- 国家中医药管理局发布的406种中医优势病种诊疗方案和临床路径目录
- 2024年水利部长江水利委员会直属事业单位招聘历年【重点基础提升】模拟试题(共500题)附带答案详解
- 卫健委监管医院合同签订流程规定
- DL-T5704-2014火力发电厂热力设备及管道保温防腐施工质量验收规程
- CBZ125-1998-潜艇船体结构焊接质量检验规则
- 2024年河南省信阳市浉河区二模语文试卷
- 代理商区域保护协议书范本
- 2024年包头钢铁职业技术学院单招职业适应性测试题库及答案解析
- 英语定位纸模板
- 中外政治思想史-形成性测试四-国开(HB)-参考资料
评论
0/150
提交评论