ImageVerifierCode 换一换
你正在下载:

树.docx

[预览]
格式:DOCX , 页数:38 ,大小:585.91KB ,
资源ID:7500557      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7500557.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(树.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

树.docx

1、树第六章 树一、选择题1、二叉树的深度为k,则二叉树最多有( C )个结点。A. 2k B. 2k-1 C. 2k-1 D. 2k-1解析:直接举例说明。2、用顺序存储的方法,将完全二叉树中所有结点按层逐个从左到右的顺序存放在一维数组R1.N中,若结点Ri有右孩子,则其右孩子是( B )。A. R2i-1 B. R2i+1(右孩子) C. R2i(左孩子) D. R2/i解析:考查二叉树的性质,父节点为i,其右孩子的结点号为2*i+1,左孩子结点的号为2*i。3、设a,b为一棵二叉树上的两个结点,在中序遍历时,a在b前面的条件是( B )。A. a在b的右方 B. a在b的左方(左边总是先访问

2、) C. a是b的祖先 D. a是b的子孙解析:中序遍历顺序:左孩子结点,父节点,右孩子结点。4、设一棵二叉树的中序遍历序列:badce,后序遍历序列:bdeca,则二叉树先序遍历序列为( )。A. adbce B. decab C. debac D. abcde解析:将图给画出来。5、在一棵具有5层的满二叉树中结点总数为(A)。A. 31 B. 32 C. 33 D. 166、由二叉树的前序和后序遍历序列( B )惟一确定这棵二叉树。A. 能 B. 不能解析:因为同样的前序遍历和后序遍历序列,可以对应不同的二叉树。已知一棵二叉树的前序遍历和后序遍历序列分别为ABC和CBA,则四棵二叉树均符合

3、要求。7、某二叉树的中序序列为ABCDEFG,后序序列为BDCAFGE,则其左子树中结点数目为( C )。A. 3 B. 2 C. 4 D. 58、若以4,5,6,7,8作为权值构造哈夫曼树,则该树的带权路径长度为( C )。A. 67 B. 68 C. 69 D. 70解析:带权路径长度。哈夫曼树。9、将一棵有100个结点的完全二叉树从根这一层开始,每一层上从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子编号为( A )。A. 98 B. 99 C. 50 D. 4810、表达式a*(b+c)-d的后缀表达式是( B )。A. abcd+- B. abc+*d- C.

4、 abc*+d- D. -+*abcd解析:不需要画图,直接翻译表达式。11、对某二叉树进行先序遍历的结果为ABDEFC,中序遍历的结果为DBFEAC,则后序遍历的结果是( B )。 A. DBFEAC B. DFEBCA C. BDFECA D. BDEFAC解析:中序遍历比较的重要,第一个元素是最左边的,第二个元素是第二层父节点。12、树最适合用来表示( C )。A. 有序数据元素 B. 无序数据元素 C. 元素之间具有分支层次关系的数据 D. 元素之间无联系的数据13、表达式A*(B+C)/(D-E+F)的后缀表达式是( C )。 A. A*B+C/D-E+F B. AB*C+D/E-F

5、+ C. ABC+*DE-F+/ D. ABCDED*+/-+解析:后缀表达式为:ABC+*DE-F+/B+C首先被翻译成BC+,然后BC+与A被翻译成ABC+*。接着D-E被翻译成DE-,DE-与F被翻译成DE-F+,最后ABC+*与DE-F+被翻译成ABC+*DE-F+/。 14、在线索二叉树中,t所指结点没有左子树的充要条件是( )。A. t-left=NULL B. t-ltag=1 C. t-ltag=1&t-left=NULL D. 以上都不对解析:当用二叉链表作为二叉树的储存结构是,因为每个节点中只有指向其左,右儿子结点的指针,所以从任意一个节点出发只能找到该节点的左右儿子。在一

6、般情况下靠它无法直接找到该节点在某种遍历下的前驱和后继结点。如果在每个结点中增加指向其前驱和后继结点的指针,将降低储存空间的效率。我们可以证明:在n个节点的二叉链表中含有n+1个空指针。因为含n个节点的二叉链表中含2n个指针,除了根节点。每个节点都有一个从父节点指向该节点的指针,以为一共使用n-1指针,所以在n个节点的二叉链表中含有n+1个空指针。因此我们可以利用这下空指针,存放指向结点在某种遍历次序下的前序和后继结点的指针。这种附加的指针称为线索,加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树。根据线索性质的不同,线索二叉树可分为前序二叉树,中序线索二叉树,后续线索二叉树。15

7、、任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序( )。A. 不发生改变 B. 发生改变 C. 不能确定 D. 以上都不对解析:不管哪种遍历都是先左结点后右结点,因此相对次序是不发生次序。16、假定在一棵二叉树中,度为2的结点数为15,度为1的结点数为30,则叶子结点数为( )个。 A. 15 B. 16 C. 17 D. 47解析:性质:叶子节点=度数为二的结点+1首先要明白度的概念:度是结点的属性,即是结点的分支。将图画出来,度为2的结点数为15,即是画四层的满二叉树。度为1的结点数为30,接着画15个含有两个节点的单分支。17、在下列情况中,可称为二叉树的是( B )。 A

8、. 每个结点至多有两棵子树的树 B. 哈夫曼树 C. 每个结点至多有两棵子树的有序树 D. 每个结点只有一棵子树解析:霍夫曼树又称最优二叉树,是一种带权路径长度最短的二叉树。18、用顺序存储的方法,将完全二叉树中所有结点按层逐个从左到右的顺序存放在一维数组R1.n中,若结点Ri有左孩子,则其左孩子是( )。A. R2i-1 B. R2i+1 C. R2i D. R2/i19、下面说法中正确的是( )。A. 度为2的树是二叉树 B. 度为2的有序树是二叉树 C. 子树有严格左右之分的树是二叉树 D. 子树有严格左右之分,且度不超过2的树是二叉树20、树的先根序列等同于与该树对应的二叉树的( )。

9、A. 先序序列 B. 中序序列 C. 后序序列 D. 层序序列 21、按照二叉树的定义,具有3个结点的二叉树有( C )种。A. 3 B. 4 C. 5 D. 6解析: 5种 具有3个结点的二叉树,有2层和3层两种情况 若有2层,则只有一种情况 若有3 层,则每层只有1个结点,一共有2*2种情况22、由权值为3,6,7,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为( A )。A. 51 B. 23 C. 53 D. 74二、判断题()1、存在这样的二叉树,对它采用任何次序的遍历,结果相同。解析:对的,例如只有一个根节点的二叉树,无论什么遍历次序结果都一样的。( )2、中序遍历一棵二叉排

10、序树的结点,可得到排好序的结点序列。解析:对,二叉排序树的概念: 二叉排序树是一种动态树表。 二叉树排序的定义:二叉排序树或者是一棵空树。 或者一颗具有如下性质的二叉树:1.若他的左子树非空,则左子树上所有节点的值均小于根节点的值。2.若它的右子树非空,则右子树上所有节点的值均大于根节点的值。3.左,右子树本身又各是一颗二叉排序树。二叉排序树的性质:按中序遍历二叉排序树,所得到的中序遍历二叉排序树,所得道德中序遍历序列是一个递增有序序列。( )3、对于任意非空二叉树,要设计其后序遍历的非递归算法而不使用堆栈结构,最适合的方法是对该二叉树采用三叉链表。解析:若二叉树采用二叉树链表结构,则链表中只

11、有孩子节点的地址,而无双亲节点的地址,而遍历过程中有需要结点的双亲结点的地址,为此,便利操作设置一个堆栈来达到这个目的。如果不设置堆栈,则需要采用三叉链表结构,因为三叉链表中出了孩子节点的地址以外,还保留了结点的双亲结点的地址。简单介绍:霍夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。( )4、在哈夫曼编码中,当两个字符出现的频率相同时,其编码也相同,对于这种情况应做特殊处理。解析:

12、给定n个权值作为n的叶子节点,构造一棵二叉树,若带权路径到达最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长队最短的树,权值较大的结点离根较近。( )5、一个含有n个结点的完全二叉树,它的高度是 log2n 1。( )6、完全二叉树的某结点若无左孩子,则它必是叶结点。三、填空题1、具有n个结点的完全二叉树的深度是 log2n +1 。2、哈夫曼树是其树的带权路径长度 最小 的二叉树。3、在一棵二叉树中,度为0的结点的个数是n0,度为2的结点的个数为n2,则有n0= N2+1 。解析:举例说明。4、树内各结点度的 最大值 称为树的度。解析:树内各结点的度的最大值。(结点拥有

13、的子树数称为结点的度)四、代码填空题1、函数InOrderTraverse(Bitree bt)实现二叉树的中序遍历,请在空格处将算法补充完整。 void InOrderTraverse(BiTree bt) if( bt!=null ) InOrderTraverse(bt-lchild); printf(“%c”,bt-data); InOrderTraverse(bt-rchild); 2、函数depth实现返回二叉树的高度。请在空格处将算法补充完整。 int depth(Bitree *t) if(t=NULL) return 0; else hl=depth(t-lchild); h

14、r= depth(t-rchild) ; if( hlhr ) return hl+1; else return hr+1; 3、写出下面算法的功能。(比较重要) Bitree *function(Bitree *bt) Bitree *t,*t1,*t2; if(bt=NULL) t=NULL; Else t=(Bitree *)malloc(sizeof(Bitree); t-data=bt-data; t1=function(bt-left); t2=function(bt-right); t-left=t2; t-right=t1; return(t); 答案:交换二叉树左右子树结点的

15、递归算法4、写出下面算法的功能。void function(Bitree *t) if(p!=NULL) function(p-lchild); function(p-rchild); printf(“%d”,p-data);答案:二叉树后序遍历递归算法五、综合题1、假设以有序对表示从双亲结点到孩子结点的一条边,若已知树中边的集合为,请回答下列问题:(1)哪个结点是根结点?(2)哪些结点是叶子结点?(3)哪些结点是k的祖先?(4)哪些结点是j的兄弟?(5)树的深度是多少?。2、假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请画出该二叉树。3、假设用于通讯的

16、电文仅由8个字母A、B、C、D、E、F、G、H组成,字母在电文中出现的频率分别为:0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。请为这8个字母设计哈夫曼编码。答案:4、已知二叉树的先序遍历序列为ABCDEFGH,中序遍历序列为CBEDFAGH,画出二叉树。答案:二叉树形态 解析:这种题是先序或者后序序列,先确定根节点。 然后把中序序列分成两部分,中序序列第一个元素是整个树,最左边的元素。 第二个元素是根节点的右孩子节点。5、试用权集合12,4,5,6,1,2构造哈夫曼树,并计算哈夫曼树的带权路径长度。答案: WPL=12*1+(4+5+6)*3+(1+2)*4

17、=12+45+12=69解析:这种题没问题。6、已知权值集合为5,7,2,3,6,9,要求给出哈夫曼树,并计算带权路径长度WPL。答案:(1)树形态: (2)带权路径长度:WPL=(6+7+9)*2+5*3+(2+3)*4=44+15+20=797、已知一棵二叉树的先序序列:ABDGJEHCFIKL;中序序列:DJGBEHACKILF。画出二叉树的形态。答案:解析:这一题做的不容易啊。8、一份电文中有6种字符:A,B,C,D,E,F,它们的出现频率依次为16,5,9,3,30,1,完成问题:(1)设计一棵哈夫曼树;(画出其树结构)(2)计算其带权路径长度WPL;答案:(1)树形态: (2)带权

18、路径长度:WPL=30*1+16*2+9*3+5*4+(1+3)*5=30+32+27+20+20=1299、已知某森林的二叉树如下所示,试画出它所表示的森林。答案: 解析:有森林转化成二叉树(左孩子,右兄弟)。树转换成二叉树是唯一的。10、有一分电文共使用5个字符;a,b,c,d,e,它们的出现频率依次为4、7、5、2、9,试构造哈夫曼树,并给出每个字符的哈夫曼编码。11、画出与下图所示的森林相对应的二叉树,并指出森林中的叶子结点在二叉树中具有什么特点。解析:由于二叉树和树都可以用二叉树链表作为储存结构,则一二叉链表作为媒介可导出树于二叉树之间的一个对应关系。给出一棵树,可以找到为一个二叉树

19、与之对应。左孩子,右兄弟。12、如下所示的二叉树,请写出先序、中序、后序遍历的序列。 答案:先序:FDBACEGIHJ 中序:ABCDEFGHIJ 后序:ACBEDHJIGF六、编程题1、编写求一棵二叉树中结点总数的算法。答案:(以先序遍历的方法为例)void count_preorder(Bitree *t, int *n) if(t!=NULL) *n+;count_preorder(t-lchild);count_preorder(t-rchild); 一、选择题:1下列关于哈夫曼树的叙述,错误的是( C )。A哈夫曼树根结点的权值等于所有叶结点权值之和。B具有n个叶结点的哈夫曼树共有2

20、n-1个结点。C哈夫曼树是一棵二叉树,因此它的结点的度可以为0,1,2。 ()D哈夫曼树是带权路径长度最短的二叉树。解析:哈夫曼树的特点:1.哈夫曼树根节点的权值等于所有叶节点权值之和。2.具有n个节点的哈夫曼树共有2n-1个节点。3.哈夫曼树是带权路径长度最短的二叉树。2由3个结点可以构成多少棵不同形态的二叉树( C )。 A3 B4 C5 D6 3如果一棵二叉树结点的前序序列是A,B,C,后序序列是C,B,A,则该二叉树结点的中序序列是( D )。 AA,B,C BA,C,B CB,C,A D不能确定解析:前序和后序在本质上都是将父节点与子结点进行分离,但并没有指明左子树和右子树的能力。因

21、此得到这两个序列只能明确父子关系,而不能确定一个二叉树。 由二叉树的中序和前序遍历序列可以唯一确定一棵二叉树 ,由前序和后序遍历则不能唯一确定一棵二叉树 。由二叉树的中序和后序遍历序列可以唯一确定一棵二叉树,由前序和后序遍历则不能唯一确定一棵二叉树。4如图所示的4棵二叉树中,( B )不是完全二叉树。 A B C D5二叉树按某种顺序线索化后,任一结点均有指向其前趋和后继的线索,这种说法( B )A正确 B错误解析:若结点有左子树,则令其lchild指针指示其左孩子;若结点没有左子树,则令其lchild指针指示其前驱。若结点有右子树,则令其rchild指针指示其右孩子;若结点没有右子树,则令其

22、rchild指针指示其后继。6二叉树的前序遍历序列中,任意一个根结点均处在其子女结点的前面,这种说法( A )。A正确 B错误解析:根据前序的顺序。7对一棵70个结点的完全二叉树,它有( A )个叶子结点。A35 B40 C30 D448设一棵二叉树中,度为1的结点数为9,则该二叉树的叶子结点的数目为( D )。A10 B11 C12 D不确定n0=n2+1解析:D不确定.因为不知道深度,也不知道度为0和2的结点数,所以不知道一共有多少个叶结点。9假定根结点的层次为0(根据这个判断),含有15个结点的二叉树最小高度为( A )。 A3 B4 C5 D6解析:假定根节点的层次是几,就从几开始数。

23、假定根结点的层次为1,含有15个结点的二叉树最小高度为410若一棵二叉树中,度为2的结点数为9,该二叉树的叶子结点的数目为( A )。A10 B11 C12 D不确定解析:根据性质:对任何一颗二叉树T,如果其终端节点数为n0,度为2的结点数为n2,则n0=n2+1。n0=n2+1提示一下:终端节点也叫叶子节点。11设根结点的层次为0,则高度为k的二叉树的最大结点数为(C )。 A2k-1 B2k C2k+1-1 D2k+1解析:若设根结点的层次为1,则这棵树的高度为k+1,高度为k+1的二叉树的最大结点数为2k+1-112以知某二叉树的后序遍历序列为abdec,先序遍历序列为cedba,它的中

24、序遍历序列为( D )。 Adebac Bacbed Cdecba D不确定13设高度为h的二叉树上只有度为0和度为2的结点,则此二叉树所包含的结点数至少为( B )。 A2h B2h-1(举例说明) C2h+1 Dh+1深度二叉树的层数,就是高度。解析:分析其结构,二叉树中只有度为0的结点和度为2的结点。对于最少结点的情况,除了第一层外,其余每层都一定是两个结点,结点总数是: 1 + 2 * (h - 1) = 2h - 114设n,m为一棵二叉树上的两个结点,在中序遍历时,n在m前的条件是( C )。An在m右方 Bn是m祖先 Cn在m左方 Dn是m子孙解析:根据中序遍历序列。左孩子,父节

25、点,右孩子。只要是先访问n后访问m,只要n在m的左边就行了。15将一棵有100个结点的完全二叉树从上到下,从左到右依次对结点进行编号,根结点的编号为49的结点的左孩子编号为( A )。 A98 B99 C50 D48解析:主要考察根节点和孩子结点的关系。16某二叉树的前序和后序序列正好相反,则该二叉树一定是( B )二叉树。A 空或只有一个结点 B高度等于其结点数 C任一结点无左孩子 D任一结点无右孩子解析:选B,你可以画一棵二叉树试试,高度等于结点数,因为先序是“根左右,后序是“左右根”,要使先序序列和后序序列正好相反,则这棵二叉树必定没有左子树或右子树,而这种树的特点就是高度等于结点数。1

26、7对于一棵满二叉树,m个树叶,n个结点,深度为h,则( C )。Ah+m=2n Bm=h-1 Cn=2h-1 Dn=h+m解析: m个树叶:2n个节点:3h深度: 2n=2h-1 18判断线索二叉树中某结p有左孩子的条件是( C )。Ap!=null Bp-lchild!=null Cp-ltag=0 Dp-ltag=1 解析:LTag=0 lchild域指示的节点的左孩子。LTag=1 lchild域指示结点的前驱。RTag=0 rchild域指示结点的右孩子。RTag=1 rchild域指示结点的右孩子。19.对于任意非空二叉树,要设计出其后序遍历的非递归算法而不使用堆栈结构,最合适的方法

27、是对该二叉树采用 储存结构。A二叉链表 B广义存储结构 C三叉链表 D顺序存储结构解析:三叉链表是二叉树的另一种主要的链式储存结构。三叉链表与二叉链表的主要区别在于,它的结点比二叉链表的结点多一个指针域,该域用于存储一个指向本节点双亲的指针。专业解析:若二叉树采用二叉树链表结构,则链表中只有孩子节点的地址,而无双亲节点的地址,而遍历过程中又需要结点的双亲节点的地址,为此,遍历操作设置一个堆栈来达到这个目的。如果不设置堆栈,则需要采用三叉链表,因为三叉链表中除了孩子节点的地址以外,还保存了结点的双亲节点的地址。20在一棵二叉树结点的先序遍历序列,中序遍历序列和后序遍历序列中,所有的叶子结点的先后

28、顺序( B )。A都不相同 B完全相同 C先序和中序相同,而与后序不同 D中序和后序相同,而与先序不同解析:所有的叶子节点即是左孩子,右孩子结点,都是本着先左后右的顺序排列。21下图所示FF是森林F转换而来的二叉树,那么F 一共有( C )个叶子结点。A4 B5 C6 D7解析:由森林转换成二叉树的原则是:左孩子,右兄弟。22在一非空二叉树的中序遍历序列中,根结点的右边( A )。A只有右子树上的所有结点 B只有右子树上的部分结点 C只有左子树上的所有结点 D只有左子树上的部分结点解析:在中序遍历序列中根节点把左右子树分开。23设森林F中有3棵树,其第一,第二和第三棵树的结点个数分别是n1,n

29、2和n3,则与森林F相对应的二叉树根结点的右子树上的结点个数是( D )。 An1 Bn1+n2 Cn3 Dn2+n3解析:假设第一棵树的结点数是一个节点,即是根节点。另两个树都是该根节点的右兄弟。举例验证。24假定一棵二叉树的结点数为18,则它的最小高度为(C )。A18 B8 C5 D4第1层 第2层 第3层 第4层 第5层1 2 4 8 325树最合适用来表示(C )。A有序数据元素 B无序数据元素 C元素之间具有分支层次关系的数据 D元素之间无联系的数据26以下有关数据结构的叙述正确的是(C )。 A线性表的线性存储结构优于链式存储结构B二叉树的第i层上有 2i-1个结点,深度为k的二叉树上有2k-1个结点。C二维数组是其数据元素为线性表的线性表。 D栈的操作方式是先进先出。二填空题1有一棵树如图示,回答下面问题:(1) 这棵

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

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