树和二叉树自测试题.docx

上传人:b****8 文档编号:10926541 上传时间:2023-02-23 格式:DOCX 页数:15 大小:23.77KB
下载 相关 举报
树和二叉树自测试题.docx_第1页
第1页 / 共15页
树和二叉树自测试题.docx_第2页
第2页 / 共15页
树和二叉树自测试题.docx_第3页
第3页 / 共15页
树和二叉树自测试题.docx_第4页
第4页 / 共15页
树和二叉树自测试题.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

树和二叉树自测试题.docx

《树和二叉树自测试题.docx》由会员分享,可在线阅读,更多相关《树和二叉树自测试题.docx(15页珍藏版)》请在冰豆网上搜索。

树和二叉树自测试题.docx

树和二叉树自测试题

TTAstandardizationoffice【TTA5AB-TTAK08-TTA2C】

 

树和二叉树自测试题

第六章树

一.名词解释:

1树2。

结点的度3。

叶子4。

分支点5。

树的度

6.父结点、子结点7兄弟8结点的层数9树的高度10二叉树

11空二叉树12左孩子、右孩子13孩子数14满二叉树15完全二叉树

16先根遍历17中根遍历18后根遍历19二叉树的遍历20判定树

21哈夫曼树

二、填空题

1、树(及一切树形结构)是一种“__分支层次______”结构。

在树上,___根_____结点没有直接前趋。

对树上任一结点X来说,X是它的任一子树的根结点惟一的__前驱______。

2、一棵树上的任何结点(不包括根本身)称为根的________。

若B是A的子孙,则称A是B的_______

3、一般的,二叉树有_____二叉树、_只根_____的二叉树、只有_左子树_____的二叉树、只有_右子树_____

的二叉树、同时有左右______的二叉树五种基本形态。

4、二叉树第i(i>=1)层上至多有_____个结点。

5、深度为k(k>=1)的二叉树至多有_____个结点。

6、对任何二叉树,若度为2的节点数为n2,则叶子数_____。

7、满二叉树上各层的节点数已达到了二叉树可以容纳的_最大值_____。

满二叉树也是_完全二叉树_____二叉树,但反之不然。

8、具有n个结点的完全二叉树的深度为______。

9、如果将一棵有n个结点的完全二叉树按层编号,则对任一编号为i(1<=i<=n)的结点X有:

(1)若i=1,则结点X是_根_____;若i〉1,则X的双亲PARENT(X)的编号为__i/2取整____。

(2)若2i>n,则结点X无_左孩子_____且无_右孩子_____;否则,X的左孩子LCHILD(X)的编号为__2i____。

(3)若2i+1>n,则结点X无__右孩子____;否则,X的右孩子RCHILD(X)的编号为__为2i+1____。

10.二叉树通常有顺序_____存储结构和_链式_____存储结构两类存储结构。

11.每个二叉链表的访问只能从__根____结点的指针,该指针具有标识二叉链表的作用。

12.对二叉链表的访问只能从_根_____指针开始,若二叉树为空,则_root_____=NULL.

13.二叉链表中每个存储结点的每个指针域必须有一个值,这个值或者是___指向孩子的_________的指针,或者是__空指针Null____。

14.具有n个结点的二叉树中,一共有__2n______个指针域,其中只有__n-1______个用来指向结点的左右孩子,其余的____n+1____个指针域为NULL。

15.二叉树有不同的链式存储结构,其中最常用的是_二叉链表_______与__三叉链表______。

16.可通过在非完全二叉树的“残缺”位置上增设“__虚结点_____”将其转化为完全二叉树。

**17.以下程序段采用先根遍历方法求二叉树的叶子数,请在横线处填充适当的语句。

Voidcountleaf(bitreptrt,int*count)/*根指针为t,假定叶子数count的初值为0*/

{if(t!

=NULL)

{if((t->lchild==NULL)&&(t->rchild==NULL))___*count++_____;

countleaf(t->lchild,&count);

_______countleaf(t->rchild,&count);

_

}

}

18.一棵二叉树由根、左子树和右子树三部分组成,因此对二叉树的遍历也可相应地分解成___访问根结点_____、_遍历左子树_______、_遍历右子树_______三项“子任务”。

19.若以D、L、R分别表示二叉树的三项子任务,限定“先左后右”,这样可能的次序有:

________、________、________三种,按这三种次序进行的遍历分别称为________、________、________。

20.树的主要遍历方法有_先序遍历_______、_中序遍历_______、___后序遍历_____等三种。

**21.判定树的每个__非终端节点______包含一个条件,对应于一次比较或判断,每个__终端节点______对应一种分类结果。

22.设定T是一判定树,其终端结点为n1,……,nk。

每个终端结点ni对应的百分为pi(通常将pi称为n1的权)。

再假定ni的祖先数为li,这样,按T进行分类的平均比较次数为________。

23.根据文字说明,请在以下横线处填充适当的语句。

采用静态链表作存储结构,设置一个大小为2n-1的数组,令数组每个元素由四个域组成:

wt是结点的权值;lchild、rchild分别为结点的左、右孩子指针;parent是结点的双亲在数组中的下标。

其数组元素类型定义如下:

typedefstruct

{floatwt/*权值*/

intparent,lchildrchild;/*指针域*/

}node;

typedefnodehftree[2*n-1];

在这种存储结构上的哈夫曼算法可描述如下:

voidHuffman(intk,floatW[k],hftreeT)/*求给定权值W的哈夫曼树T*/

{inti,j,x,y;

floatm,n;

for(i=0;i<2*k-1;i++)

{T[i].parent=-1;T[i].lchild=-1;T[i].rchild=-1;

if(________)T[i].wt=W[i];

elseT[i].wt=0

}

for(i=0;i

{x=0;y=0;m=maxint;n=maxint;

for(j=0;j

if((T[j].wt

elseif((T[j].wt

T[x].parent=________;T[y].parent=________;

T[k+i].wt=________;

T[k+i].lchild=________;T[k+i].rchild=________;

}

24.若二叉树的一个叶子是某子树的中根遍历序列中的第一个结点,则它必是该子树的后根遍历序列中的_第一_______个结点。

25.在_先序______遍历二叉树的序列中,任何结点的子树上的所有结点,都是直接跟在该结点之后。

***26.具有n个结点的完全二叉树,若按层次从上到下、从左到右对其编,号(根结点为1号),则编号最大的分支结点序号是_n/2取整_______,编号最小的分支结点序号是____1____,编号最大的叶子结点序号是__n______,编号最小的叶子结点序号是__n/2取整+1______。

**27.二叉树的先根遍历序列中,除根结点外,任一结点均处在其双亲结点的__后面______。

**28.先根遍历树和先根遍历与该树对应的二叉树,其结果___相同_____。

**29.树与二叉树之间最主要的差别是:

二叉树中各结点的子树要区分为_左子树______和右子树_______,即使在结点只有一棵子树的情况下,也要明确指出该子树是_左子树_______还是___右子树_____。

***30.由_树_____转换成二叉树时,其根结点的右子树总是空的。

**31.哈夫曼树是带权路径度___最小_____的树,通常权值较大的结点离根__近______。

**32.有m个叶子结点的哈夫曼树,其结点总数为__2m-1______。

33.一棵树的形状如图填空题33所示,它的根结点是_____A___,叶子结点是______e,j,,结点H的度是_3______,这棵树的度是___4_____,这棵树的深度是_5_______,结点F的儿子结点是__j,k______,结点G的父结点是___c_____。

**34.树的结点数目至少为__1______,二叉树的结点数目至少为___0_____。

35.____树____中结点的最大度数允许大于2,而____二叉树____中结点的最大度数不允许大于2。

**36.结点最少的树为_____只有一个结点的树___,结点最少的二叉树为____空二叉树____。

37.若一棵二叉树的叶子数为n,则该二叉树中,左、右子树皆非空的结点个数为___n-1____。

**38.任意一棵具有n个结点的二叉树,若它有m个叶子,则该二叉树上度数为1的结点为_____n+1-2m___个。

**39.现有按中序遍历二叉树的结果为ABC,问有___5_____种不同形态的二叉树可以得到这一遍历结果,这些二叉树分别是________。

**40.以数据集{4,5,6,7,10,12,18}为叶结点权值所构造的哈无曼树为________,其带权路径长度为__165______。

41.有m个叶子结点的哈夫曼树上的结点数是___2m-1_____。

42.已知一棵度为3的树有2个度为1的结点,3个度过为2的结点,4个度为3的结点,则该树中有__12______个叶子结点。

43.设树T的度为4,其中度为1、2、3和4的结点个数分别是4、2、1和1,则T中叶子结点的个数是________。

三、单向选择题

1.以下说法错误的是

(1)

①树形结构的特点是一个结点可以有多个直接前趋

②线性结构中的一个结点至多只有一个直接后继

③树形结构可以表达(组织)更复杂的数据

④树(及一切树形结构)是一种"分支层次"结构

⑤任何只含一个结点的集合是一棵树

2,以下说法错误的是(3)

①二叉树可以是空集

**②二叉树的任一结点都有两棵子树

③二叉树与树具有相同的树形结构

④二叉树中任一结点的两棵子树有次序之分

3、以下说法错误的是(4)

①完全二叉树上结点之间的父子关系可由它们编号之间的关系来表达

②在三叉链表上,二叉树的求双亲运算很容易实现

③在二叉链表上,求根,求左、右孩子等很容易实现

④在二叉链表上,求双亲运算的时间性能很好

&&4、以下说法错误的是(4)

**①一般在哈夫曼树中,权值越大的叶子离根结点越近

②哈夫曼树中没有度数为1的分支结点

③若初始森林中共有n裸二叉树,最终求得的哈夫曼树共有2n-1个结点

④若初始森林中共有n裸二叉树,进行2n-1次合并后才能剩下一棵最终的哈夫曼树

5.深度为6的二叉树最多有()个结点

(2)

①64②63③32④31

6.将含有83个结点的完全二叉树从根结点开始编号,根为1号,后面按从上到下、从左到右的顺序对结点编号,那么编号为41的双结点编号为(4)

①42②40③21④20

***7.任何一棵二叉树的叶结点在其先根、中根、后跟遍历序列中的相对位置(3)

①肯定发生变化②有时发生变化

③肯定不发生变化④无法确定

***8.设二叉树有n个结点,则其深度为(不是完全4)

①n-1②n③5floor(log2n)④无法确定

9.设深度为k的二叉树上只有度为0和度为2的节点,则这类二叉树上所含结点总数最少(3)个

①k+1②2k③2k-1④2k+1

**10.下列说法正确的是

(1)

①树的先根遍历序列与其对应的二叉树的先根遍历序列相同

②树的先根遍历序列与其对应的二叉树的后根遍历序列相同

③树的后根遍历序列与其对应的二叉树的先根遍历序列相同

④树的后根遍历序列与其对应的二叉树的后根遍历序列相同

11.下列说法中正确的是(4)

①任何一棵二叉树中至少有一个结点的度为2

②任何一棵二叉树中每个结点的度都为2二叉树可空

③任何一棵二叉树中的度肯定等于2

④任何一棵二叉树中的度可以小于2

12.一棵二叉树满足下列条件:

对任意结点,若存在左、右子树,则其值都小于它的左子树上所有结点的值,而大于右子树上所有结点的值。

现采用

(2)遍历方式就可以得到这棵二叉树所有结点的递增序列。

①先根②中根③后根④层次

***13.设森林T中有4棵树,第一、二、三、四棵树的结点个数分别是n1,n2,n3,n4,那么当把森林T转换成一棵二叉树后,且根结点的右子树上有(4)个结点。

①n1-1②n1③n1+n2+n3④n2+n3+n4

**14.森林T中有4棵树,第一、二、三、四棵树的结点个数分别是n1,n2,n3,n4,那么当把森林T转换成一棵二叉树后,且根结点的左孩子上有

(1)个结点。

①n1-1②n1③n1+n2+n3④n2+n3+n4

15.对含有

(2)个结点的非空二叉树,采用任何一种遍历方式,其结点访问序列均相同。

①0②1③2④不存在这样的二叉树

**16.讨论树、森林和二叉树的关系,目的是为了

(1)

①借助二叉树上的运算方法去实现对树的一些运算

2.对二叉树进行存储

③将树、森林转换成二叉树

④体现一种技巧,没有什么实际意义

17.如图选择题17所示二叉树的中序遍历序列是()

①abcdgef②dfebagc③dbaefcg④defbagc

18.已知某二叉树的后续遍历序列是dabec,中序遍历序列是deabc,它的前序遍历序列是(4)

①acbed②deabc③decab④cedba

**19.如果T2是由有序树T转化而来的二叉树,那么T中结点的前序就是T2中结点的

(1)

①前序②中序③后序④层次序

20.如果T2是由有序树T转化而来的二叉树,那么T中结点的后序就是T2中结点的

(2)

①前序②中序③后序④层次序

21.某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,则其后序遍历的结点访问顺序是(4)

①bdgcefha②gdbecfha③④bdgechfa④gdbehfca

22.在图选择题22中的二叉树中,(3)不是完全二叉树。

23、二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,这种说法

(1)

①正确②错误

24、由于二叉树中每个结点的度最大为2,所以二叉树是一种特殊的树,这种说法

(2)

①五确②错误

25,二叉树是每个结点的度不超过2的有序树的特殊情况,这种说法

(2)

①正确②错误

26·树最适合用来表示(3)

①有序数据元素②无序数据元素

③元素之间具有分支层次关系的数据④元素之间无联系的数据

27,深度为5的二叉树至多有(3)个结点。

①16②32③31④10

28、在计算递归函数时,如不使用递归过程,则一般情况下必须借助于

(1)数据结构

①栈②树③双向队列④顺序表

29.堆(Heap)是

(2)

①完全二叉树②线性表③满二叉树

30、下列说法中正确的是(4)

①二叉树中任何一个结点的度都为2②二叉树的度为2

③任何一棵二叉树中至少有一个结点的度为2④一棵二叉树的度可以小于2

31、设二叉树根结点的层次为0,一棵高度为h的满二叉树中的结点个数是(4)

①2h②2h-1③2h-1④2h+1-1

32、设二叉树结点的先根序列、中根序列和后根序列中,所有叶子结点的先后顺序

(2)

①都不相同②完全相同

③先序和中序相同,而与后序不同④中序和后序相同,而与先序不同

33·以下说法错误的是

(2)

①存在这样的二叉树,对它采用任何次序的遍历,其结点访问序列均相同

②二叉树是树的特殊情形

③由树转换成二叉树,其根结点的右子树总是空的

④在二叉树只有一棵子树的情况下也要明确指出该子树是左子树还是右子树

34、以下说法正确的是(3)

①先根遍历树和前序遍历与该树对应的二叉树,其结果不同

②后根遍历树和前序遍历与该树对应的二叉树,其结果不同

③前序遍历森林和前序遍历与该森林对应的二叉树,其结果相同

④后序遍历森林和中序遍历与该森林对应的二叉树,其结果不同

35·以下说法正确的是

(1)

①一般来说,若深度为k的n个结点的二叉树具有最小路径长度,那么从根结点到第k-1层具有最多的结点数为2k-1-1余下的n-2k-1+1个结点在第k层的任一位置上

②若有一个结点是某二叉树子树的前序遍历序列中的最后一个结点,则它必是该子树的前序遍历序列中的最后一个结点。

③若一个结点是某二叉树子树的前序遍历序列中的最后一个结点,则它必是该子树的中序遍历序列中的最后一个结点。

④在二叉树中插人结点,该二叉树便不再是二叉树

36、以下说法正确的是()

①若一个树叶是某二叉树子树的前序遍历序列中的最后一个结点,则它必是该子树的前序遍历序列中的最后一个结点。

②若一个树叶是某二叉树子树的前序遍历序列中的最后一个结点,则它必是该子树的中序离历序列中的最后一个结点

③二叉树中,具有两个子女的父结点,在中序遍历序列中,它的后继结点最多只能有一个子女结点。

④在二叉树中,具有一个子女结点,在中序遍历序列中,它没有后继子女结点。

37、以下说法错误的是(3)

①哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近。

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

③已知二叉树的前序遍历和后序遍历序列并不能惟一地确定这棵树,因为不知道树的根结点是哪一个。

④在前序遍历二叉树的序列中,任何结点的子树的所有结点都是直接跟在该结点的之后。

四、简答及应用题

1.简述二叉链表的类型定义。

2.简述三叉链表的类型定义。

3.简述孩子链表表示法的类型定义。

4.分别就图简答题中的二叉树和树回答下列问题

(1)哪个是根结点?

(2)哪些是叶结点?

(3)哪个是G的双亲?

(4)哪些是G的祖先?

(5)哪些是G的孩子?

(6)哪些是E的子孙?

(7)哪些是E的兄弟哪些是C的兄弟

(8)结点B和I的层数分别是多少?

(9)树的深度是多少?

(10)以结点G为根的子树的深度是多少?

(11)树的度数是多少

5.为什么图简答题5所示的结构都不是树形结构?

详细说明理由。

6.分别画出含3个结点的树与二叉树的所有不同形态。

7.分别画出图简答题7-1所示二叉树的二叉链表、三叉链表和顺序存储结构。

8.分别写出图简答题(a)所示二叉树的先根、中根和后根序列。

9.试找出分别满足下列条件的所有二叉树:

(1)先根序列和中根序列相同;

(2)中根序列和后根序列相同;

(3)先根序列和后根序列相同。

10.已知一棵二叉树的中根序列和后根序列分别为BDCEAFHG和EDCBHGEA,试画出这棵二叉树。

11.试分别画出图简答题11-1所示树的孩子链表、孩子兄弟链表和静态双亲链表。

12.分别给出简答题图中树的先根、后根和层次遍历的结点访问序列。

13.将图简答题13-1所示的林转换成二叉树。

14.分别画出图简答题14-1所示各二叉树对应的林。

15.给定权值7,18,3,32,5,26,12,8,构造相应的哈夫曼树。

16.试以三种遍历为基础,分别写出在二叉树上查找直接前趋或直接后继的关键操作步骤。

17.已知一棵二叉树的前根序列和中根序列分别为ABDGHECFIJ及GDHBEACIJF,请画出这棵二叉树。

18.设某密码电文由8个字母组成,每个字母在电文中的出现频率分别是7,19,2,6,32,3,21,10,试为这8个字母设计相应的哈夫曼编码。

19.有一二叉树如图19-1所示,试画出它的顺序存储结构示意图。

20.将图简答20-1所示森林转换为二叉树。

五,算法设计

1、以二叉链表为存储结构,分别实现二叉树的下列运算:

(1)PARENT(BT,X);

(2)CREATE(X,;

(3)DELLEFT(BT,X)。

2.以三叉链表作存储结构重做上题。

3.以二叉链表作存储结构,试编写求二叉树深度的算法。

4.一棵n个结点的完全二叉树存放在二叉树的顺序存储结构中,试编写非递归算法对该树进行先根遍历。

5.试编写算法判断两棵二叉树是否等价。

若二叉树T1和T2等价,则T1和T2都是空的二叉树;或T1和T2的根结点的值相同,并且T1的左子树与T2的左子树是等价的,T1的右子树与T2的右子树是等价的。

6.试编写算法交换二叉树中所有结点的左、右子树(自选存储结构)。

7.试编写算法查找二叉链表中数据域值为X的结点(假定各结点的数据域值各不相同),并打印出X所有祖先的数据域值(提示:

利用后根遍历非递归算法)。

8.试以孩子链表为存储结构,实现树数据结构的下列运算:

(1)PARENT(T,X);

(2)CHILD(T,X,i);(3)DELETE(T,X,i)。

9.试分别以孩子兄弟链表和静态双亲链表为存储结构,重做上题。

10.试分别编写二叉树中根遍历在下列存储结构上的非递归算法:

(1)二叉链表;

(2)三叉链表(提示:

考虑是否需要引入工作栈);

11.试分别编写二叉树后根遍历在下列存储结构上的非递归算法:

(1)二叉链表(提示:

可在指针进栈的同时将一个标志进栈);

(2)在存储结点中增设了标志域的mark:

0..2的三叉链表(要求不用工作栈);

12.试编写一个将百分制转换成五分制的算法,要求其时间性能尽可能地高(即平均比较次数尽可能少)。

假定学生成绩的分布情况如下:

分数

0-59

60-69

70-79

80-89

90-100

比例

0.05

0.15

0.40

0.30

0.10

13.有一二叉链表,按后根遍历时输出的结点顺序为a1,a2,…aan。

试编写一算法,要求输出后根序列的逆序an,an-1…,a2,a1。

14.有一二叉链表,试编写按层次顺序遍历二叉树的算法。

15.以二叉链表作为存储结构,试编写求二叉树中叶子数的算法。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 起诉状

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

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