版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、下图所示的4棵二叉树中,不是完全二叉树的是( )ABCD2、二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,这种说法( )。 A、正确B、错误C、不一定3、已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是( )。 A、acbedB、decabC、deabcD、cedba 4、如果T2是由有序树T转换而来的二叉树,那么T中结点的后序就是T2中结点的( )。 A、前序B、中序C、后序D、层次序5、深度为5的二叉树至多有( )个结点。 A、16B、32C、31D、106、在一个非空二叉树的中序遍历序列中,根结点的右边( )。 A、只有右子树上的所有
2、结点B、只有右子树上的部分结点 C、只有左子树上的部分结点D、只有左子树上的所有结点7、树最适合用来表示( )。A、有序数据元素 B、无序数据元素 C、元素之间具有分支层次关系的数据 D、元素之间无联系的数据。8、任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序( )。 A、不发生改变 B、发生改变 C、不能确定 D、以上都不对9、实现任意二叉树的后序遍历的非递归算法而不使用栈结构,最佳方案是二叉树采用( )存储结构。 A、二叉链表 B、广义表存储结构 C、三叉链表 D、顺序存储结构10、对一个满二叉树,m个树叶,n个结点,深度为h,则( )。 A、n=m+h B、h+m=2n C
3、、m=h-1 D、n=2h-111、设n,m为二叉树上的两个结点,在中序遍历时,n在m前的条件是( )。 A、n在m右方 B、n是m祖先 C、n在m左方 D、n是m子孙12已知一算术表达式的中缀形式为 A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为( )A-A+B*C/DE B. -A+B*CD/E C-+*ABC/DE D. -+A*BC/DEAB+C*EFDG+*-/13. 设有一表示算术表达式的二叉树(见右图),它所表示的算术表达式是( )A. A*B+C/(D*E)+(F-G) B. (A*B+C)/(D*E)+(F-G) C. (A*B+C)/(D*E+(F-G))
4、D. A*B+C/D*E+F-G14. 在下述结论中,正确的是( )只有一个结点的二叉树的度为0; 二叉树的度为2; 二叉树的左右子树可任意交换; 深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。 A B C D15. 设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树结点个数为n,森林F中第一棵树的结点个数是( )Am-n Bm-n-1 Cn+1 D条件不足,无法确定 16若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是( )A9 B11 C15 D不确定 17一棵完全二叉树上有1001个结点,其中叶子结点的个数是( )A 250 B 500
5、 C254 D505 E以上答案都不对 18. 一个具有1025个结点的二叉树的高h为( )A11 B10 C11至1025之间 D10至1024之间19深度为h的满m叉树的第k层有( )个结点。(1=<k=<h)Amk-1 Bmk-1 Cmh-1 Dmh-120. 利用二叉链表存储树,则根结点的右指针是( )。A指向最左孩子 B指向最右孩子 C空 D非空21对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用( )次序的遍历实现编号。A先序 B. 中序 C. 后序 D. 从根开始按层次遍历22
6、若二叉树采用二叉链表存储结构,要交换其所有分支结点左、右子树的位置,利用( )遍历方法最合适。A前序 B中序 C后序 D按层次23一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足( )A所有的结点均无左孩子 B所有的结点均无右孩子C只有一个叶子结点 D是任意一棵二叉树24. 若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则x的前驱为( ) A.X的双亲 B.X的右子树中最左的结点 C.X的左子树中最右结点 D.X的左子树中最右叶结点25. 线索二叉树是一种( )结构。A 逻辑 B 逻辑和存储 C 物理 D线性26n个结点的线索二叉树上含有的线索数为( )A2n
7、Bnl Cnl Dn 27下面几个符号串编码集合中,不是前缀编码的是( )。A0,10,110,1111 B11,10,001,101,0001C00,010,0110,1000 Db,c,aa,ac,aba,abb,abc 28. 当一棵有n个结点的二叉树按层次从上到下,同层次从左到右将数据存放在一维数组 Al.n中时,数组中第i个结点的左孩子为( )AA2i(2i=<n) B. A2i+1(2i+1=< n) CAi/2 D无法确定29、高度为h的完全二叉树至少有多少个结点?至多有多少个结点?解:高度为h的完全二叉树至少有2h-1个结点,至多有2h-1个结点(也就是满二叉树)。
8、30、在什么样的情况下,等长编码是最优的前缀码?答:在每个字符的使用概率相同的情况下,也即在哈夫曼树中每片叶子的权重相等的时候,等长编码是最优的前缀码。31.假设在树中,结点x是结点y的双亲时,用(x,y)来表示树边。已知一棵树边的集合为(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的兄弟
9、? (8)结点b和n的层次各是多少? (9)树的深度是多少? (10)以结点c为根的子树的深度是多少? (11) 树的度数是多少?答:这是测试我们对树的基本概念的掌握情况。a是根结点;mndfjkl是叶结点;c是g的双亲;c,a是g的祖先;j,k是g的孩子;imn是e的子孙;d是e的兄弟,g,h是f的兄弟;b的层次是2,n的层次是5;树的深度是5;以c为根的子树深度是3;树的度数是3。32、试找出分别满足下面条件的所有二叉树:(1)前序序列和中序序列相同; (2)中序序列和后序序列相同;(3)前序序列和后序序列相同; (4)前序、中序、后序序列均相同。答:(1) 前序序列和中序序列相同的二叉树
10、是:没有左子树的二叉树(右单支树)。(2) 中序序列和后序序列相同的二叉树是:没有右子树的二叉树(左单支树)。(3) 前序序列和后序序列相同的二叉树是:只有根结点的二叉树。(4) 前序、中序、后序序列均相同的二叉树:只有根结点的二叉树。33、对二叉树中的结点进行按层次顺序(每一层自左至右)的访问操作称为二叉树的层次遍历,遍历所得到的结点序列称为二叉树层次序列。现已知一棵二叉树的层次序列为ABCDEFGHIJ,中序序列为DBGEHJACIF,请画出此二叉树。解: A / B C / D E F/
11、160; /G H I J34、对下图所示的森林:(1)求各树的前序序列和后序序列;(2)求森林的前序序列和后序序列;(3)将此森林转换为相应的二叉树;(4)给出(a)所示树的以双亲链表表示、孩子链表表示、双亲孩子链表表示及孩子兄弟链表表示等四种存储结构,并指出哪些存储结构易于求指定结点的祖先,哪些易于求指定结点的后代?解:(1) (a)的前序序列:ABCDEF 后序序列:BDEFCA (b)的前序序列:GHIJ
12、K 后序序列:IJKHG (c)的前序序列:LMPQRNO 后序序列:QRPMNOL(2) 此森林的前序序列: ABCDEFGHIJKLMPQRNO 此森林的后序序列: BDEFCAIJKHGQRPMNOL(3) 略(4) 略35完全二叉树中,结点个数为n,则编号最大的分支结点的编号为 。答:ën/2û36二叉树结点的对称序序列为A,B,C,D,E,F,G,后序序列为B,D,C,A,F,G,E
13、,则该二叉树结点的前序序列为(1) ,则该二叉树对应的树林包括 (2) 棵树。答:(1)EACBDGF (2)237具有n个结点的满二叉树,其叶结点的个数是_。答:(n+1)/2设内部节点数为a,叶节点数为b,明显有a+b=n (1),非空满二叉树中所有节点的出度正好等于入度,每个内部节点出度为2,叶节点出度为0,所有节点的出度和为2a;根节点入度为0,其他节点的入度为1,所有节点的入度和为a+b-1;因此有2a=a+b-1 (2)。由(1)(2)得b=(n+1)/2,a=(n-1)/2。另外可得b=a+1,也就是说,非空满二叉树的叶节点数正好比内部节点数多1。38设一棵后序线索树的高是50,
14、结点x是树中的一个结点,其双亲是结点y,y的右子树高度是31,x是y的左孩子。则确定x的后继最多需经过_中间结点(不含后继及x本身)答:31(x的后继是经x的双亲y的右子树中最左下的叶结点)39有一份电文中共使用 6个字符:a,b,c,d,e,f,它们的出现频率依次为2,3,4,7,8,9,试构造一棵哈夫曼树,则其加权路径长度WPL为(1),字符c的编码是(2)。答:(1)80 (2)001(不唯一)40下面是求二叉树高度的类C写的递归算法,试补充完整。说明二叉树的两指针域为lchild与rchild, 算法中p为二叉树的根,lh和rh分别为以p为根的二叉树的左子树和右子树的高,hi为以p为根
15、的二叉树的高,hi最后返回。height(p)if (1) if(p->lchild=null) lh=(2) ; else lh=(3);if(p->rchild=null) rh=(4); else rh=(5);if (lh>rh) hi=(6);else hi=(7); else hi=(8);return hi;/ 答:(1)p (2)0 (3)height(p->lchild) (4)0 (5)height(p->rchild) (6)lh+1 (7)rh+1 (8)041已知一棵满二叉树的结点个数为20到40之间的素数,此二叉树的叶子结点有多少个?答
16、:结点个数在20到40的满二叉树且结点数是素数的数是31,其叶子数是16。42用一维数组存放的一棵完全二叉树;ABCDEFGHIJKL。请写出后序遍历该二叉树的访问结点序列。答:HIDJKEBLFGCA43一棵左右子树均不空的二叉树在先序线索化后,其空指针域数为多少?答:左右子树均不空的二叉树先序线索化后,空指针域为1个(最后访问结点的右链为空)。44设有正文AADBAACACCDACACAAD,字符集为A,B,C,D,设计一套二进制编码,使得上述正文的编码最短。45编程求以孩子兄弟表示法存储的森林的叶子结点数。要求描述结构。题目分析当森林(树)以孩子兄弟表示法存储时,若结点没有孩子(firs
17、tchild=null),则它必是叶子,总的叶子结点个数是孩子子树(firstchild)上的叶子数和兄弟(nextsibling)子树上叶结点个数之和。typedef struct nodeElemType data; /数据域 struct node * firstchild, * nextsibling;/孩子与兄弟域 *Tree;int Leaves (Tree t) /计算以孩子-兄弟表示法存储的森林的叶子数 if(t) if(t->firstchild =null) /若结点无孩子,则该结点必是叶子 return(1+Leaves(t->nextsibling); /返
18、回叶子结点和其兄弟子树中的叶子结点数else return (Leaves(t->firstchild)+Leaves(t->nextsibling); /孩子子树和兄弟子树中叶子数之和/结束Leaves46有n个结点的完全二叉树存放在一维数组A1.n中,试据此建立一棵用二叉链表表示的二叉树,根由tree指向。 BiTree Creat(ElemType A,int i)/n个结点的完全二叉树存于一维数组A中,本算法据此建立以二叉链表表示的完全二叉树 BiTree tree;if (i<=n) tree=(BiTree)malloc(sizeof(BiNode); tree-
19、>data=Ai;if(2*i>n) tree->lchild=null;else tree->lchild=Creat(A,2*i);if(2*i+1>n) tree->rchild=null;else tree->rchild=Creat(A,2*i+1);return (tree); /Creat算法讨论初始调用时,i=1。47. 以孩子兄弟链表为存储结构,请设计算法求树/森林的深度。题目分析由孩子兄弟链表表示的树,求高度的递归模型是:若树为空,高度为零;若第一子女为空,高度为1和兄弟子树的高度的大者;否则,高度为第一子女树高度加1和兄弟子树高度
20、的大者。其非递归算法使用队列,逐层遍历树,取得树的高度。int TreeDepth(CSTree T)if (!T) return 0; else h1= TreeDepth(T->firstchild); h2= TreeDepth(T->nextsibling); return (max(h1+1,h2); / TreeDepth48. 设计算法返回二叉树T的先序序列的最后一个结点的指针,要求采用非递归形式,且不许用栈。题目分析二叉树先序序列的最后一个结点,若二叉树有右子树,则是右子树中最右下的叶子结点;若无右子树,仅有左子树,则是左子树最右下的叶子结点;若二叉树无左右子树,则
21、返回根结点。BiTree LastNode(BiTree bt) /返回二叉树bt先序序列的最后一个结点的指针BiTree p=bt;if(bt=null) return(null);else while(p) if (p->rchild) p=p->rchild; /若右子树不空,沿右子树向下else if (p->lchild) p=p->lchild; /右子树空,左子树不空,沿左子树向下else return(p); /左右子树均为空,p即为所求/lastnode49. 设一棵二叉树的根结点指针为T,C为计数变量,初值为0,试写出对此二叉树中结点计数的算法:BT
22、LC(T,C)。int BTLC(BiTree T,int *c) /对二叉树T的结点计数if(T) *c+; /调用时*c=0BTLC(T->lchild,&c); /统计左子树结点BTLC(T->rchild,&c); /统计右子树结点 /50设计算法:统计一棵二叉树中所有叶结点的数目及非叶结点的数目。void Count(BiTree bt,int *n0,*n) /统计二叉树bt上叶子结点数n0和非叶子结点数nif(bt)if (bt->lchild=null && bt->rchild=null) *n0+;/叶子结点 else
23、 *n+; /非叶结点 Count(bt->lchild,&n0,&n); Count(bt->rchild,&n0,&n); /Count51、编写算法完成下列操作:无重复地输出以孩子兄弟链表存储的树T中的所有的边。输出形式为(k1,k2)(ki,kj),其中ki和kj为树结点中的结点标识。Void OutEdger(CSTree T) /先根遍历输出树中各条边 if (T) p=T->firstchild; while(p) printf(T->data,p->data); OutEdger(p); p=p->nextsi
24、bling; /52、已知Li和Ri(i=1,2,n)分别指示二叉树中第i个结点的左孩子和右孩子结点,0表示空,试写出判别结点u是否是结点v的子孙的算法。status descendent(int L,int R,int u,int v) if (u&&v) if(Lv=u|Rv=u) return TRUE; else if(descendent(L,R,u,Lv) return TRUE; else return(descendent(L,R,u,Rv); else return FALSE;/53. 设一棵二叉树以二叉链表为存贮结构,结点结构为(lchild, data,
25、rchild),设计一个算法将二叉树中所有结点的左,右子树相互交换。类似本题的另外叙述有:(1)设t为一棵二叉树的根结点地址指针,试设计一个非递归的算法完成把二叉树中每个结点的左右孩子位置交换。(2)写一个将二叉树中每个结点的左右孩子交换的算法。void exchange(BiTree bt) /将二叉树bt所有结点的左右子树交换 if(bt) BiTree s;s=bt->lchild; bt->lchild=bt->rchild; bt->rchild=s; /左右子女交换exchange(bt->lchild); /交换左子树上所有结点的左右子树exchan
26、ge(bt->rchild); /交换右子树上所有结点的左右子树 算法讨论将上述算法中两个递归调用语句放在前面,将交换语句放在最后,则是以后序遍历方式交换所有结点的左右子树。中序遍历不适合本题。下面是本题(1)要求的非递归算法void exchange(BiTree t) /交换二叉树中各结点的左右孩子的非递归算法int top=0; BiTree s,p; /s是二叉树的结点指针的栈,容量足够大 if(bt)s+top=t; while(top>0)t=stop-;if(t->lchild|t->rchild)p=t->lchild;t->lchild=t->rchild;t->rchild=p;/交换左右if(t->lchild) s+top=t->lchild; /左子女入栈if(t->rchild) s+top=t->rchild; /右子女入栈/while(top>0)/if(bt) /exchange 54要求二叉树按二叉链表形式存储,(1)写一个建立二叉树的算法。(2)写一个判别给定的二叉树是否是完全二叉树的算法。完全二叉树定义为:深度为K,具有N个结点的二叉树的每个结点都与深度为K的满二叉树中编号从1至N的结点一一对应。此题
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 展会宣传推广合同(2篇)
- 小卖铺租赁合同(2篇)
- 2025年度建筑密封硅酮胶招标采购合同3篇
- 二零二五年度智慧城市物联网设备采购合同2篇
- 二零二五版果园果树种植技术指导与承包合同3篇
- 2024版短期贷款合同范例3篇
- 二零二五年度消防工程监理合同2篇
- 二零二五年度建筑工程项目招投标与合同履约担保服务合同3篇
- 二零二五版股权代持纠纷调解与风险防范合同5篇
- 二零二五年度不动产权属转移担保合同3篇
- 薪酬与福利管理实务-习题答案 第五版
- 废旧物资处置申请表
- GB/T 37234-2018文件鉴定通用规范
- GB/T 31888-2015中小学生校服
- 质量检查考核办法
- 云南省普通初中学生成长记录-基本素质发展初一-初三
- 2023年系统性硬化病诊断及诊疗指南
- 外科医师手术技能评分标准
- 《英语教师职业技能训练简明教程》全册配套优质教学课件
- 采购控制程序
- 六年级上册数学简便计算题200题专项练习
评论
0/150
提交评论