数据结构练习(二叉树)
中国农业大学_821数据结构_《数据结构》习题(6)

第6章 二叉树与树一、回答题1. 图6-1所示的树的叶子结点、非中端结点、每个结点的度及树的深度各是多少?图6-1 树2. 已知一棵树边的集合表示为:{ ( L, N ), ( G, K ), ( G, L ), ( G, M ), ( B, E ), ( B, F ), ( D, G ), ( D, H ), ( D, I ), ( D, J ), ( A, B ), ( A, C ), ( A, D ) },画出这棵树,并回答以下问题:(1) 树的根结点是哪个?哪些是叶子结点?哪些是非终端结点? (2) 树的度是多少?各个结点的度是多少? (3) 树的深度是多少?各个结点的层数是多少?(4) 对于结点G ,它的双亲结点、祖先结点、孩子结点、子孙结点、兄弟和堂兄弟分别是哪些结点?3. 如果一棵度为m 的树中,度为1的结点数为n 1,度为2的结点数为n 2,……,度为m 的结点数为n m ,那么该树中含有多少个叶子结点?有多少个非终端结点?ABECDFGHJI4. 任意一棵有n 个结点的二叉树,已知有m 个叶子结点,能否证明度为2结点有m-1个?5. 已知在一棵含有n 个结点的树中,只有度为k 的分支结点和度为0的叶子结点,那么该树含有的叶子结点的数目是多少?6. 一棵含有n 个结点的k 叉树,可能达到的最大深度和最小深度各为多少?7. 对于3个结点A 、B 、C ,可以过程多少种不同形态的二叉树?8. 深度为5的二叉树至多有多少个结点?9. 任何一棵二叉树的叶子结点在先序、中序和后序遍历中的相对次序是发生改变?不发生改变?不能确定?10. 设n 、m 为一棵二叉树上的两个结点,在中序遍历时,n 在m 前的条件是什么? 11. 已知某二叉树的后续遍历序列是dabec ,中序遍历序列是debac ,那么它的前序遍历序列是什么?12. 对一棵满二叉树,m 个树叶,n 个结点,深度为h ,则n 、m 和h 之间的关系是什么? 13. 对图6-2(a)和(b)所示的二叉树,它们的经过先序、中序和后序遍历后得到的结点序列分别是什么?画出它们的先序线索二叉树和后序线索二叉树。
数据结构叉树习题含答案

第6章树和二叉树1.选择题(1)把一棵树转换为二叉树后,这棵二叉树的形态是()。
A.唯一的B.有多种C.有多种,但根结点都没有左孩子D.有多种,但根结点都没有右孩子(2)由3 个结点可以构造出多少种不同的二叉树?()A.2 B.3 C.4 D.5(3)一棵完全二叉树上有1001个结点,其中叶子结点的个数是()。
A.250 B. 500 C.254 D.501(4)一个具有1025个结点的二叉树的高h为()。
A.11 B.10 C.11至1025之间 D.10至1024之间(5)深度为h的满m叉树的第k层有()个结点。
(1=<k=<h)A.m k-1 B.m k-1 C.m h-1 D.m h-1(6)利用二叉链表存储树,则根结点的右指针是()。
A.指向最左孩子 B.指向最右孩子 C.空 D.非空(7)对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用()遍历实现编号。
A.先序 B. 中序 C. 后序 D. 从根开始按层次遍历(8)若二叉树采用二叉链表存储结构,要交换其所有分支结点左、右子树的位置,利用()遍历方法最合适。
A.前序 B.中序 C.后序 D.按层次(9)在下列存储形式中,()不是树的存储形式?A.双亲表示法 B.孩子链表表示法 C.孩子兄弟表示法D.顺序存储表示法(10)一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足()。
A.所有的结点均无左孩子B.所有的结点均无右孩子C.只有一个叶子结点 D.是任意一棵二叉树(11)某二叉树的前序序列和后序序列正好相反,则该二叉树一定是()的二叉树。
A.空或只有一个结点 B.任一结点无左子树C.高度等于其结点数 D.任一结点无右子树(12)若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则X的前驱为()。
A.X的双亲 B.X的右子树中最左的结点C.X的左子树中最右结点 D.X的左子树中最右叶结点(13)引入二叉线索树的目的是()。
数据结构(c语言)第6章二叉树课练答案(含完整实验程序刘玉保留

第6章树和二叉树自测卷解答姓名班级一、下面是有关二叉树的叙述,请判断正误(每小题1分,共10分)(√)1. 若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。
(×)2.二叉树中每个结点的两棵子树的高度差等于1。
(√)3.二叉树中每个结点的两棵子树是有序的。
(×)4.二叉树中每个结点有两棵非空子树或有两棵空子树。
(×)5.二叉树中每个结点的关键字值大于其左非空子树(若存在的话)所有结点的关键字值,且小于其右非空子树(若存在的话)所有结点的关键字值。
(应当是二叉排序树的特点)(×)6.二叉树中所有结点个数是2k-1-1,其中k是树的深度。
(应2i-1)(×)7.二叉树中所有结点,如果不存在非空左子树,则不存在非空右子树。
(×)8.对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i—1个结点。
(应2i-1)(√)9.用二叉链表法(link-rlink)存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。
(正确。
用二叉链表存储包含n个结点的二叉树,结点共有2n个链域。
由于二叉树中,除根结点外,每一个结点有且仅有一个双亲,所以只有n-1个结点的链域存放指向非空子女结点的指针,还有n+1个空指针。
)即有后继链接的指针仅n-1个。
(√)10. 〖01年计算机系研题〗具有12个结点的完全二叉树有5个度为2的结点。
最快方法:用叶子数=[n/2]=6,再求n2=n0-1=5二、填空(每空1分,共15分)1.由3个结点所构成的二叉树有5种形态。
2. 【计算机研2000】一棵深度为6的满二叉树有n1+n2=0+ n2= n0-1=31 个分支结点和26-1 =32个叶子。
注:满二叉树没有度为1的结点,所以分支结点数就是二度结点数。
3.一棵具有257个结点的完全二叉树,它的深度为9。
(注:用⎣ log2(n) ⎦+1= ⎣ 8.xx ⎦+1=94.【全国专升本统考题】设一棵完全二叉树有700个结点,则共有350个叶子结点。
(完整word版)数据结构-树练习题

数据结构-树练习题一、选择题1、二叉树的深度为k,则二叉树最多有( C )个结点。
A. 2kB. 2k-1C. 2k-1D. 2k-12、用顺序存储的方法,将完全二叉树中所有结点按层逐个从左到右的顺序存放在一维数组R[1..N]中,若结点R[i]有右孩子,则其右孩子是( B )。
A. R[2i-1]B. R[2i+1]C. R[2i]D. R[2/i]3、设a,b为一棵二叉树上的两个结点,在中序遍历时,a在b前面的条件是( B )。
A. a在b的右方B. a在b的左方C. a是b的祖先D. a是b的子孙4、设一棵二叉树的中序遍历序列:badce,后序遍历序列:bdeca,则二叉树先序遍历序列为()。
A. adbceB. decabC. debacD. abcde5、在一棵具有5层的满二叉树中结点总数为( A )。
A. 31B. 32C. 33D. 166、由二叉树的前序和后序遍历序列( B )惟一确定这棵二叉树。
A. 能B. 不能7、某二叉树的中序序列为ABCDEFG,后序序列为BDCAFGE,则其左子树中结点数目为(C )。
A. 3B. 2C. 4D. 58、若以{4,5,6,7,8}作为权值构造哈夫曼树,则该树的带权路径长度为(C )。
A. 67B. 68C. 69D. 709、将一棵有100个结点的完全二叉树从根这一层开始,每一层上从左到右依次对结点进行编号,根结点的编号为1,则编号为49的结点的左孩子编号为(A )。
A. 98B. 99C. 50D. 4810、表达式a*(b+c)-d的后缀表达式是( B )。
A. abcd+-B. abc+*d-C. abc*+d-D. -+*abcd11、对某二叉树进行先序遍历的结果为ABDEFC,中序遍历的结果为DBFEAC,则后序遍历的结果是( B )。
A. DBFEACB. DFEBCAC. BDFECAD. BDEFAC12、树最适合用来表示( C )。
数据结构树和二叉树习题及答案

习题六树和二叉树一、单项选择题1.以下说法错误的是()A.树形结构的特点是一个结点可以有多个直接前趋B.线性结构中的一个结点至多只有一个直接后继C.树形结构可以表达(组织)更复杂的数据D.树(及一切树形结构)是一种”分支层次”结构E.任何只含一个结点的集合是一棵树2.下列说法中正确的是()A.任何一棵二叉树中至少有一个结点的度为 2B.任何一棵二叉树中每个结点的度都为 2C.任何一棵二叉树中的度肯定等于 2D.任何一棵二叉树中的度可以小于 23.讨论树、森林和二叉树的关系,目的是为了()A.借助二叉树上的运算方法去实现对树的一些运算B.将树、森林按二叉树的存储方式进行存储C.将树、森林转换成二叉树D.体现一种技巧,没有什么实际意义4.树最适合用来表示()A.有序数据元素 B .无序数据元素C.元素之间具有分支层次关系的数据 D .元素之间无联系的数据5.若一棵二叉树具有10个度为2的结点,5个度为1的结点,则度为0的结点个数是()A.9 B.11 C .15 D .不确定6.设森林F中有三棵树,第一,第二,第三棵树的结点个数分别为M1, M2和M3与森林F对应的二叉树根结点的右子树上的结点个数是()。
A.M1 B .M1+M2 C .M3 D .M2+M37.一棵完全二叉树上有1001个结点,其中叶子结点的个数是()A.250 B .500 C .254 D .505 E .以上答案都不对8.设给定权值总数有n 个,其哈夫曼树的结点总数为()A.不确定 B . 2n C . 2n+1 D . 2n-19.二叉树的第I层上最多含有结点数为()I I-1 I-1 IA.2I B .2I-1-1 C .2I-1D .2I-110.一棵二叉树高度为h, 所有结点的度或为0,或为2,则这棵二叉树最少有()结点A.2h B .2h-1 C .2h+1 D .h+111.利用二叉链表存储树,则根结点的右指针是()。
第6章_数据结构习题题目及答案_树和二叉树_参考答案

一、基础知识题6.1设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1,求树T中的叶子数。
【解答】设度为m的树中度为0,1,2,…,m的结点数分别为n0, n1, n2,…, nm,结点总数为n,分枝数为B,则下面二式成立n= n0+n1+n2+…+nm (1)n=B+1= n1+2n2 +…+mnm+1 (2)由(1)和(2)得叶子结点数n0=1+即: n0=1+(1-1)*4+(2-1)*2+(3-1)*1+(4-1)*1=86.2一棵完全二叉树上有1001个结点,求叶子结点的个数。
【解答】因为在任意二叉树中度为2 的结点数n2和叶子结点数n0有如下关系:n2=n0-1,所以设二叉树的结点数为n, 度为1的结点数为n1,则n= n0+ n1+ n2n=2n0+n1-11002=2n0+n1由于在完全二叉树中,度为1的结点数n1至多为1,叶子数n0是整数。
本题中度为1的结点数n1只能是0,故叶子结点的个数n0为501.注:解本题时要使用以上公式,不要先判断完全二叉树高10,前9层是满二叉树,第10层都是叶子,……。
虽然解法也对,但步骤多且复杂,极易出错。
6.3 一棵124个叶结点的完全二叉树,最多有多少个结点。
【解答】由公式n=2n0+n1-1,当n1为1时,结点数达到最多248个。
6.4.一棵完全二叉树有500个结点,请问该完全二叉树有多少个叶子结点?有多少个度为1的结点?有多少个度为2的结点?如果完全二叉树有501个结点,结果如何?请写出推导过程。
【解答】由公式n=2n0+n1-1,带入具体数得,500=2n0+n1-1,叶子数是整数,度为1的结点数只能为1,故叶子数为250,度为2的结点数是249。
若完全二叉树有501个结点,则叶子数251,度为2的结点数是250,度为1的结点数为0。
6.5 某二叉树有20个叶子结点,有30个结点仅有一个孩子,则该二叉树的总结点数是多少。
《数据结构》习题汇编06第六章树和二叉树试题

第六章树和二叉树试题一、单项选择题1.树中所有结点的度等于所有结点数加()。
A. 0B. 1C. -1D. 22.在一棵树中,()没有前驱结点。
A. 分支结点B. 叶结点C. 根结点D. 空结点3.在一棵二叉树的二叉链表中,空指针域数等于非空指针域数加()。
A. 2B. 1C. 0D. -14.在一棵具有n个结点的二叉树中,所有结点的空子树个数等于()。
A. nB. n-1C. n+1D. 2*n5.在一棵具有n个结点的二叉树的第i层上(假定根结点为第0层,i大于等于0而小于等于树的高度),最多具有()个结点。
A. 2iB. 2i+1C. 2i-1D. 2n6.在一棵高度为h(假定根结点的层号为0)的完全二叉树中,所含结点个数不小于()。
A. 2h-1B. 2h+1C. 2h-1D. 2h7.在一棵具有35个结点的完全二叉树中,该树的高度为()。
假定空树的高度为-1。
A. 5B. 6C. 7D. 88.在一棵具有n个结点的完全二叉树中,分支结点的最大编号为()。
假定树根结点的编号为0。
A. ⎣(n-1)/2⎦B. ⎣n/2⎦C. ⎡n/2⎤D. ⎣n/2⎦ -19.在一棵完全二叉树中,若编号为i的结点存在左孩子,则左子女结点的编号为()。
假定根结点的编号为0A. 2iB. 2i-1C. 2i+1D. 2i+210.在一棵完全二叉树中,假定根结点的编号为0,则对于编号为i(i>0)的结点,其双亲结点的编号为()。
A. ⎣(i+1)/2⎦B. ⎣(i-1)/2⎦C. ⎣i/2⎦D. ⎣i/2⎦-111.在一棵树的左子女-右兄弟表示法中,一个结点的右孩子是该结点的()结点。
A. 兄弟B. 子女C. 祖先D. 子12.在一棵树的静态双亲表示中,每个存储结点包含()个域。
A. 1B. 2C. 3D. 413.已知一棵二叉树的广义表表示为a (b (c), d (e ( , g (h) ), f ) ),则该二叉树的高度为()。
(山东科技大学)PTA数据结构答案与解析

2.单选题
2-1* 如果一棵非空k(k≥2)叉树T中每个非叶子结点都有k个孩子,则称T为正则k叉树。若T的高度为h(单结点的树 h=1),则T的结点数最多为:(3分) 1. ( 2. ( 3. ( )/(k−1) )/(k−1) )/(k−1)
4. 以上都不是 解析:将k=2带入,套用二叉树的结点树结论,发现A为正确形式 答案: A 2-2* 如果一棵非空k(k≥2)叉树T中每个非叶子结点都有k个孩子,则称T为正则k叉树。若T的高度为h(单结点的树 h=1),则T的结点数最少为:(3分) 1. ( 2. ( )/(k−1)+1 )/(k−1)−1
3. 4. 解析:这道题我不知道怎么正确推导答案,不过这题可以举一个正确的二叉树的例子,带答案用排除法做 答案: D 2-3 要使一棵非空二叉树的先序序列与中序序列相同,其所有非叶结点须满足的条件是:(2分) 1. 只有左子树 2. 只有右子树 3. 结点的度均为1 4. 结点的度均为2 解析:略 答案: B 2-4 已知一棵二叉树的树形如下图所示,其后序序列为{ e , a , c , b , d , g , f }。树中与结分支数,n代表结点数,联立上边二式可得正确答案,故选C 答案: C 单位: 浙江大学 2-8 有一个四叉树,度2的结点数为2,度3的结点数为3,度4的结点数为4。问该树的叶结点个数是多少?(2分) 1. 10 2. 12 3. 20 4. 21 解析:根据题意随便画一种符合题意的图即可判断,也可以通过公式推导。
解析:知道中序遍历和先序遍历,是可以画出树来的。如果不是很会这种方法,反正只有三个节点,大可以画图举 例。可得没有树满足先序是ABC,中序是CAB的。 我们这样去分析:由先序遍历可得A是根节点;由中序遍历可得C是左孩子,B是右孩子,而先序遍历中B是左孩 子,C是右孩子,矛盾,所以不可能滴 答案: F
数据结构二叉树习题含答案

第6章树和二叉树1.选择题(1)把一棵树转换为二叉树后,这棵二叉树的形态是()。
A.唯一的B.有多种C.有多种,但根结点都没有左孩子D.有多种,但根结点都没有右孩子(2)由3 个结点可以构造出多少种不同的二叉树?()A.2 B.3 C.4 D.5(3)一棵完全二叉树上有1001个结点,其中叶子结点的个数是()。
A.250 B. 500 C.254 D.501(4)一个具有1025个结点的二叉树的高h为()。
A.11 B.10 C.11至1025之间 D.10至1024之间(5)深度为h的满m叉树的第k层有()个结点。
(1=<k=<h)A.m k-1 B.m k-1 C.m h-1 D.m h-1(6)利用二叉链表存储树,则根结点的右指针是()。
A.指向最左孩子 B.指向最右孩子 C.空 D.非空(7)对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用()遍历实现编号。
A.先序 B. 中序 C. 后序 D. 从根开始按层次遍历(8)若二叉树采用二叉链表存储结构,要交换其所有分支结点左、右子树的位置,利用()遍历方法最合适。
A.前序 B.中序 C.后序 D.按层次(9)在下列存储形式中,()不是树的存储形式?A.双亲表示法 B.孩子链表表示法 C.孩子兄弟表示法D.顺序存储表示法(10)一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足()。
A.所有的结点均无左孩子B.所有的结点均无右孩子C.只有一个叶子结点 D.是任意一棵二叉树(11)某二叉树的前序序列和后序序列正好相反,则该二叉树一定是()的二叉树。
A.空或只有一个结点 B.任一结点无左子树C.高度等于其结点数 D.任一结点无右子树(12)若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则X的前驱为()。
A.X的双亲 B.X的右子树中最左的结点C.X的左子树中最右结点 D.X的左子树中最右叶结点(13)引入二叉线索树的目的是()。
数据结构练习(二)答案

数据结构练习(二)答案一、填空题:1.若一棵树的括号表示为A(B(E,F),C(G(H,I,J,K),L),D(M(N))),则该树的度为(1)4,树的深度为(2)4 ,树中叶子结点的个数为(3)8。
2.一棵满二叉树中有m个叶子,n个结点,深度为h,请写出m、n、h之间关系的表达式(4)n=2h-1,m=n+1-2h-1 n=2m-1 。
3.一棵二叉树中如果有n个叶子结点,则这棵树上最少有(5)2n-1 个结点。
一棵深度为k的完全二叉树中最少有2k-1(6)个结点,最多有(7)2k-1个结点。
4.具有n个结点的二叉树,当它是一棵(8)完全二叉树时具有最小高度(9) log2n」+1,当它为一棵单支树时具有高度(10) n 。
5.对具有n个结点的完全二叉树按照层次从上到下,每一层从左到右的次序对所有结点进行编号,编号为i的结点的双亲结点的编号为_(11)__[i/2]__,左孩子的编号为___2i____,右孩子的编号为__2i+1______。
6.若具有n个结点的二叉树采用二叉链表存储结构,则该链表中有__2n_个指针域,其中有_n-1_个指针域用于链接孩子结点,__n+1_个指针域空闲存放着NULL 。
7.二叉树的遍历方式通常有__先序__、___中序__、__后序__和___层序___四种。
8.已知二叉树的前序遍历序列为ABDCEFG,中序遍历序列为DBCAFEG,其后序遍历序列为___DCBFGEA__。
9.已知某完全二叉树采用顺序存储结构,结点的存放次序为A,B,C,D,E,F,G,H,I,J,该完全二叉树的后序序列为___HIDJEBFGCA____。
10.若具有n个结点的非空二叉树有n0个叶结点,则该二叉树有__n0-1_个度为2的结点,____n-2n0+1____个度为1的结点。
11.任何非空树中有且仅有一个结点没有前驱结点,该结点就是树的__根____。
度为k的树中第i层最多有___k i-1_______个结点(i>=1),深度为h的k叉树最多有___k0+k1+....+k h-1____个结点。
数据结构树和二叉树习题(有答案)

E F D GAB/+ +* - C* 第六章树和二叉树一、选择题1.已知一算术表达式的中缀形式为 A+B*C-D/E ,后缀形式为ABC*+DE/-,其前缀形式为( )A .-A+B*C/DE B. -A+B*CD/E C .-+*ABC/DED. -+A*BC/DE【北京航空航天大学 1999 一、3 (2分)】2.算术表达式a+b*(c+d/e )转为后缀表达式后为()【中山大学 1999 一、5】A .ab+cde/*B .abcde/+*+C .abcde/*++ D.abcde*/++3. 设有一表示算术表达式的二叉树(见下图),它所表示的算术表达式是()【南京理工大学1999 一、20(2分)】A. A*B+C/(D*E)+(F-G)B. (A*B+C)/(D*E)+(F-G)C. (A*B+C)/(D*E+(F-G ))D. A*B+C/D*E+F-G4. 设树T 的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1 则T 中的叶子数为()A .5 B.6 C.7D .8【南京理工大学 2000 一、8 (1.5分)】5. 在下述结论中,正确的是()【南京理工大学 1999 一、4 (1分)】①只有一个结点的二叉树的度为0; ②二叉树的度为2;③二叉树的左右子树可任意交换;④深度为K 的完全二叉树的结点个数小于或等于深度相同的满二叉树。
A .①②③ B .②③④ C.②④D .①④6. 设森林F 对应的二叉树为B ,它有m 个结点,B 的根为p,p 的右子树结点个数为n,森林F中第一棵树的结点个数是()A .m-nB .m-n-1C .n+1D .条件不足,无法确定【南京理工大学2000 一、17(1.5分)】7. 树是结点的有限集合,它((1))根结点,记为T 。
其余结点分成为m (m>0)个((2))的集合T1,T2,…,Tm ,每个集合又都是树,此时结点T 称为Ti 的父结点,Ti 称为T 的子结点(1≤i ≤m )。
数据结构(树和二叉树)练习题与答案1

1、树最适合用来表示()。
A.元素之间无联系的数据B.元素之间具有层次关系的数据C.无序数据元素D.有序数据元素正确答案:B2、现有一“遗传”关系,设x是y的父亲,则x可以把他的属性遗传给y。
表示该遗传关系最适合的数据结构为()。
A.线性表B.树C.数组D.图正确答案:B3、一棵节点个数为n、高度为h的m(m≥3)次树中,其分支数是()。
A.n+hB.h-1C.n-1D.nh正确答案:C4、若一棵3次树中有2个度为3的节点,1个度为2的节点,2个度为1的节点,该树一共有()个节点。
A.11B.5C.8D.10正确答案:A解析: A、对于该3次树,其中有n3=2,n2=1,n1=2,总分支数=总度数=n-1,总度数=1×n1+2×n2+3×n3=10,则n=总度数+1=11。
5、设树T的度为4,其中度为1、2、3、4的节点个数分别为4、2、1、1,则T中的叶子节点个数是()。
A.6B.8C.7D.5正确答案:B解析: B、这里n1=4,n2=2,n3=1,n4=1,度之和=n-1=n1+2n2+3n3+4n4=15,所以n=16,则n0=n-n1-n2-n3-n4=16-8=8。
6、有一棵三次树,其中n3=2,n2=1,n0=6,则该树的节点个数为()。
A.9B.12C.大于等于9的任意整数D.10正确答案:C解析: C、n=n0+n1+n2+n3=6+n1+1+2=9+n1。
7、假设每个节点值为单个字符,而一棵树的后根遍历序列为ABCDEFGHIJ,则其根节点值是()。
A.JB.BC.以上都不对D.A正确答案:A8、一棵度为5、节点个数为n的树采用孩子链存储结构时,其中空指针域的个数是()。
A.4nB.4n-1C.4n+1D.5n正确答案:C解析: C、总指针数=5n,非空总指针数=分支数=n-1,空指针域的个数=5n-(n-1)=4n+1。
9、有一棵三次树,其中n3=2,n2=2,n1=1,该树采用孩子兄弟链存储结构时,则总的指针域数为()。
吉林省专升本数据结构习题——二叉树的遍历和构造

吉林省专升本数据结构习题、参考答案及解析——二叉树的遍历和构造1、已知一棵二叉树如下图所示,请写出该二叉树的前序、中序、后序、层序遍历序列。
参考答案前序遍历:ABDCEFGH中序遍历:BDACGFHE后序遍历:DBGHFECA层序遍历:ABCDEFGH解析:前序遍历是D(根)L(左子树)R(右子树)的顺序,左右子树也需要进行前序遍历。
中序遍历是LDR顺序,后序遍历是LRD顺序。
层序遍历是从上层到下层同层之间从左到右的顺序进行遍历。
2、已知一棵二叉树的前序和中序遍历序列分别是ABCDEFH和BCAEDFH,构造该二叉树,并写出后序遍历序列。
参考答案后序遍历序列:CBEHFDA解析: 1)、前序遍历的顺序是DLR,所以序列的第一个结点是根结点。
2)、中序遍历的顺序是LDR,在前序确定了根结点的情况下,中序序列能区分左右子树。
3)、左右子树的构造方法重复1、2即可。
3、已知一棵二叉树的中序和后序遍历序列分别是ACBEFDG和CFEGDBA,构造该二叉树,并写出前序遍历序列。
参考答案前序遍历:ABCDEFG解析:后序和中序构造二叉树的方法参考前序和中序构造二叉树的方法。
后序遍历LRD顺序,确定序列的最后一个元素是根结点,再用中序分左右子树。
4、已知一棵表达式树的前序遍历序列和中序遍历序列分别是-*+abcd和a+b*c-d。
构造该表达式树,并写出后序遍历序列。
参考答案后序遍历:ab+c*d-解析:表达式树的分支结点应该是+-*/这类运算符,而叶子结点放abcd这些操作数。
在一些题目中会出现重复使用的运算符,通过这个性质就能区分出正确的表达式树。
5、已知一棵表达式树的中序遍历序列和后序遍历序列分别是a+b*c-d+e/f和ab+c*de+f/-。
构造该表达式树,并写出前序遍历序列。
前序遍历:-*+abc/+def。
数据结构练习试卷3(题后含答案及解析)

数据结构练习试卷3(题后含答案及解析)题型有:1. 选择题选择题(每小题1分,共75分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将此选项涂写在答题卡相应位置上,答在试卷上不得分。
1.二叉树(1)。
在完全的二叉树中,若一个结点没有(2),则它必定是叶结点。
每棵树都能唯一地转换成与它对应的二叉树。
由树转换成的二叉树里,一个结点N的左子结点是N在原树里对应结点的(3),而N的右子结点是它在原树里对应结点的(4)。
A.是特殊的树B.不是树的特殊形式C.是两棵树的总称D.是只有两个根结点的树形结构正确答案:B 涉及知识点:数据结构2.A.左子结点B.右子结点C.左子结点或者没有右子结点D.兄弟正确答案:A 涉及知识点:数据结构3.A.最左子结点B.最右子结点C.最邻近的右兄弟D.最邻近的左兄弟正确答案:A 涉及知识点:数据结构4.A.最左子结点B.最右子结点C.最邻近的右兄弟D.最邻近的左兄弟正确答案:C解析:树是结点的有限集合,它有且仅有1个根结点。
二叉树有0个或1个根结点,二者是两个不同的概念。
所以,第1空的正确答案为选项B。
在完全二叉树中,如果一个结点没有左子结点,那么必然没有右子结点,所以就一定是叶结点。
第2空的正确答案为选项A。
树中每个结点最多只有一个最左边的孩子(长子)和一个右邻的兄弟。
按照这种关系很自然地就能将树转换成相应的二叉树:①在所有兄弟结点之间加一连线;②对每个结点,除了保留与其长子的连线外,去掉该结点与其他孩子的连线。
因为树根没有兄弟,所以,树转换为二叉树之后,二叉树的根结点的右子树必然为空。
在由树转换成的二叉树中,一个结点N的左一个结点N的左子结点是N在原树里对应结点的最左子结点,而N的右子结点是它在原树里对应结点的最邻近的右兄弟。
所以,第3空的正确答案为选项A,第4空的正确答案为选项C。
知识模块:数据结构5.在一棵非空二叉树中,叶子节点的总数比度为2的节点总数多(43)个。
数据结构二叉树练习题

1. 填空题:
(1) 对于一个具有n个结点的二叉树,当它为一棵___完全__二叉树时,具有最小高度,高度等于_log 2 (n+1);当它为一棵只有一个叶子结点的二叉树时,具有最大高度,高度等于__2^n -1_。
(2) 由三个结点构成的二叉树,共有__5__种不同的结构。
2、在一棵非空二叉树的中序遍历序列中,根结点的右边_A__。
A. 只有右子树上的所有结点
B. 只有右子树上的部分结点
C. 只有左子树上的所有结点
D. 只有左子树上的部分结点
3.写出下图中二叉树的先序遍历序列、中序遍历序列、后序遍历序列、层次遍历序列,并回答以下问题:该树的度等于多少?树的深度是多少?叶子结点的个数是多少?
先序遍历序列:ABDGCEFH
中序遍历序列:DGBAECHF
后序遍历序列:GDBEHFCA
层次遍历序列:ABCDEFGH
该树的度等于5,树的深度是log10+1,叶子结点的个数是3.
4.已知一棵二叉树的中根和后根遍历序列如下,画出该二叉树。
中根遍历序列:C D B E G A H F I J K
后根遍历序列:D C E G B F H K J I A。
数据结构二叉树习题含答案

2.1 创建一颗二叉树创建一颗二叉树,可以创建先序二叉树,中序二叉树,后序二叉树。
我们在创建的时候为了方便,不妨用‘#’表示空节点,这时如果先序序列是:6 4 2 3 # # # # 5 1 # # 7 # #,那么创建的二叉树如下:下面是创建二叉树的完整代码:穿件一颗二叉树,返回二叉树的根2.2 二叉树的遍历二叉树的遍历分为:先序遍历,中序遍历和后序遍历,这三种遍历的写法是很相似的,利用递归程序完成也是灰常简单的:2.3 层次遍历层次遍历也是二叉树遍历的一种方式,二叉树的层次遍历更像是一种广度优先搜索(BFS)。
因此二叉树的层次遍历利用队列来完成是最好不过啦,当然不是说利用别的数据结构不能完成。
2.4 求二叉树中叶子节点的个数树中的叶子节点的个数= 左子树中叶子节点的个数+ 右子树中叶子节点的个数。
利用递归代码也是相当的简单,2.5 求二叉树的高度求二叉树的高度也是非常简单,不用多说:树的高度= max(左子树的高度,右子树的高度) + 12.6 交换二叉树的左右儿子交换二叉树的左右儿子,可以先交换根节点的左右儿子节点,然后递归以左右儿子节点为根节点继续进行交换。
树中的操作有先天的递归性。
2.7 判断一个节点是否在一颗子树中可以和当前根节点相等,也可以在左子树或者右子树中。
2.8 求两个节点的最近公共祖先求两个节点的公共祖先可以用到上面的:判断一个节点是否在一颗子树中。
(1)如果两个节点同时在根节点的右子树中,则最近公共祖先一定在根节点的右子树中。
(2)如果两个节点同时在根节点的左子树中,则最近公共祖先一定在根节点的左子树中。
(3)如果两个节点一个在根节点的右子树中,一个在根节点的左子树中,则最近公共祖先一定是根节点。
当然,要注意的是:可能一个节点pNode1在以另一个节点pNode2为根的子树中,这时pNode2就是这两个节点的最近公共祖先了。
显然这也是一个递归的过程啦:可以看到这种做法,进行了大量的重复搜素,其实有另外一种做法,那就是存储找到这两个节点的过程中经过的所有节点到两个容器中,然后遍历这两个容器,第一个不同的节点的父节点就是我们要找的节点啦。
数据结构 树和二叉树 习题

树与二叉树一.选择题1. 假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为( )个。
A .15B .16C .17D .472. 按照二叉树的定义,具有3个结点的不同形状的二叉树有( )种。
A. 3B. 4C. 5D. 63. 按照二叉树的定义,具有3个不同数据结点的不同的二叉树有( )种。
A. 5B. 6C. 30D. 324. 深度为5的二叉树至多有( )个结点。
1A. 16B. 32C. 31D. 10 5. 设高度为h 的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为( )。
A. 2hB. 2h-1C. 2h+1D. h+16. 对一个满二叉树2,m 个树叶,n 个结点,深度为h ,则( )。
A. n=h+m 3B. h+m=2nC. m=h-1D. n=2 h-17. 任何一棵二叉树的叶结点在先序.中序和后序遍历序列中的相对次序( )。
A.不发生改变B.发生改变C.不能确定D.以上都不对8. 如果某二叉树的前根次序遍历结果为stuwv ,中序遍历为uwtvs ,那么该二叉树的后序为( )。
A. uwvtsB. vwutsC. wuvtsD. wutsv9. 某二叉树的前序遍历结点访问顺序是abdgcefh ,中序遍历的结点访问顺序是dgbaechf ,则其后序遍历的结点访问顺序是( )。
A. bdgcefhaB. gdbecfhaC. bdgaechfD. gdbehfca 10. 在一非空二叉树的中序遍历序列中,根结点的右边( )。
A. 只有右子树上的所有结点B. 只有右子树上的部分结点C. 只有左子树上的部分结点D. 只有左子树上的所有结点 11. 树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序遍历.中序遍历和后序遍历。
这里,我们把由树转化得到的二叉树4叫做这1深度为n 的二叉树结点至多有2n-12 满二叉树是除最后一层无任何子节点外,每一层上的所有结点都有两个子结点的二叉树3 对于深度为h 的满二叉树,n=20+21+…+2h-1=2h-1,m=2h-1。
数据结构(树与图部分)练习题

数据结构(树与图部分)练习题数据结构(树与图部分)练习题⼀、填空题1.不考虑顺序的3个结点可构成种不同形态的树,种不同形态的⼆叉树。
2.已知某棵完全⼆叉树的第4层有5个结点,则该完全⼆叉树叶⼦结点的总数为:。
3.已知⼀棵完全⼆叉树的第5层有3个结点,其叶⼦结点数是。
4.⼀棵具有110个结点的完全⼆叉树,若i=54,则结点i的双亲编号是;结点i的左孩⼦结点的编号是,结点i的右孩⼦结点的编号是。
5.⼀棵具有48个结点的完全⼆叉树,若i=20,则结点i的双亲编号是______;结点i的左孩⼦结点编号是______,右孩⼦结点编号是______。
6.在有n个叶⼦结点的Huffman树中,总的结点数是:______。
7.图是⼀种⾮线性数据结构,它由两个集合V(G)和E(G)组成,V(G)是______的⾮空有限集合,E(G)是______的有限集合。
8.遍历图的基本⽅法有优先搜索和优先搜索两种⽅法。
9.图的遍历基本⽅法中是⼀个递归过程。
10.n个顶点的有向图最多有条弧;n个顶点的⽆向图最多有条边。
11.在⼆叉树的⼆叉链表中,判断某指针p所指结点是叶⼦结点的条件是。
12.在⽆向图G的邻接矩阵A中,若A[i,j]等于1,则A[j,i]等于。
⼆、单项选择题1.树型结构的特点是:任意⼀个结点:()A、可以有多个直接前趋B、可以有多个直接后继C、⾄少有1个前趋D、只有⼀个后继2.如下图所⽰的4棵⼆叉树中,()不是完全⼆叉树。
3.深度为5的⼆叉树⾄多有()个结点。
A、16B、32C、31D、104.64个结点的完全⼆叉树的深度为:()。
A、8B、7C、6D、55.将⼀棵有100个结点的完全⼆叉树从根这⼀层开始,每⼀层从左到右依次对结点进⾏编号,根结点编号为1,则编号为49的结点的左孩⼦的编号为:()。
A、98B、99C、50D、486.在⼀个⽆向图中,所有顶点的度之和等于边数的()倍。
A、1/2B、1C、2D、47.设有13个值,⽤它们组成⼀棵Huffman树,则该Huffman树中共有( )个结点。
(山东科技大学)PTA数据结构答案与解析-

2-6
若元素a、b、c、d、e、f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈工作,则不可能 得到的出栈序列是? (2分)
1. b c a e f d 2. c b d a e f 3. d c e b f a 4. a f e d c b
B代表分支数,n代表总结点数,将上边式子联立,然后带入题目中数据,可得
答案: D
2-9
若一棵二叉树的前序遍历序列是{ 4, 2, 1, 3, 6, 5, 7 },中序遍历序列是{ 1, 2, 3, 4, 5, 6, 7 },则下列哪句是错的?(3 分)
1. 这是一棵完全二叉树 2. 所有的奇数都在叶子结点上 3. 这是一棵二叉搜索树 4. 2是5的父结点 解析:根据前序,中序遍历可以建出图来,然后根据图来判断即可
答案: C
2-4
设栈S和队列Q的初始状态均为空,元素a、b、c、d、e、f、g依次进入栈S。若每个元素出栈后立即进入队列Q, 且7个元素出队的顺序是b、d、c、f、e、a、g,则栈S的容量至少是: (2分)
1. 1 2. 2 3. 3 4. 4
解析: 模拟即可 答案: C
2-5
假设有5个整数以1、2、3、4、5的顺序被压入堆栈,且出栈顺序为3、5、4、2、1,那么为了获得这样的输出, 堆栈大小至少为: (2分)
1-3 若一个栈的输入序列为{1, 2, 3, 4, 5},则不可能得到{3, 4, 1, 2, 5}这样的出栈序列。 (2分) 解析:2一定先与1出栈的 答案: T
2.单选题
2-1 给定一个堆栈的入栈序列为{ 1, 2, ⋯, n },出栈序列为{ p1, p2, ⋯, pn }。如果p2=n,则存在多少种不同的出栈序 列?(2分)
数据结构应用题练习

1、假设一棵二叉树的层序序列是ABCDEFGHIJ 和中序序列是DBGEHJACIF,请画出该树。
21、有一个完全二叉树按层次顺序存放在一维数组中,如下所示:请指出结点P 的父结点,左子女,右子女。
3、给出下列二叉树的先序序列。
4、已知二叉树的先序遍历序列为ABCDEFGH ,中序遍历序列为CBEDFAGH ,画出二叉树。
答案:二叉树形态AFHGDECB(2)设一棵二叉树的先序序列: A B D F C E G H ,中序序列: B F D A G E H C ①画出这棵二叉树。
②画出这棵二叉树的后序线索树。
③将这棵二叉树转换成对应的树(或森林)。
ABFD (CE HG AED CB HG F AEDCBHG F null(1) (2)1、已知一棵二叉树的前序序列为:A,B,D,G,J,E,H,C,F,I,K,L中序序列:D,J,G,B,E,H,A,C,K,I,L,F。
i.写出该二叉树的后序序列;ii.画出该二叉树;iii.求该二叉树的高度(假定空树的高度为-1)和度为2、度为1、及度为0的结点个数。
该二叉树的后序序列为:J,G,D,H,E,B,K,L,I,F,C,A。
该二叉树的形式如图所示:该二叉树高度为:5。
度为2的结点的个数为:3。
度为1的结点的个数为:5。
度为0的结点个数为:4。
5、试用权集合{12,4,5,6,1,2}构造哈夫曼树,并计算哈夫曼树的带权路径长度。
答案:215611187341230WPL=12*1+(4+5+6)*3+(1+2)*4=12+45+12=696、已知权值集合为{5,7,2,3,6,9},要求给出哈夫曼树,并计算带权路径长度WPL 。
答案:(1)树形态:325510199761332(2)带权路径长度:WPL=(6+7+9)*2+5*3+(2+3)*4=44+15+20=79(3) 假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构练习(二叉树)学号31301374 姓名张一博班级软件工程1301 .一、选择题1.按照二叉树定义,具有3个结点的二叉树共有 C 种形态。
(A) 3 (B) 4 (C) 5 (D) 62.具有五层结点的完全二叉树至少有 D 个结点。
(A) 9 (B) 15 (C) 31 (D) 163.以下有关二叉树的说法正确的是 B 。
(A) 二叉树的度为2 (B)一棵二叉树的度可以小于2(C) 至少有一个结点的度为2 (D)任一结点的度均为24.已知二叉树的后序遍历是dabec,中序遍历是debac,则其前序遍历是 D 。
(A)acbed (B)decab (C) deabc (D) cedba5.将一棵有1000个结点的完全二叉树从上到下,从左到右依次进行编号,根结点的编号为1,则编号为49的结点的右孩子编号为 B 。
(A) 98 (B) 99 (C) 50 (D) 没有右孩子6.对具有100个结点的二叉树,若有二叉链表存储,则其指针域共有 D 为空。
(A) 50 (B) 99 (C) 100 (D) 1017.设二叉树的深度为h,且只有度为1和0的结点,则此二叉树的结点总数为 C 。
(A) 2h (B) 2h-1 (C) h (D) h+18.对一棵满二叉树,m个树叶,n个结点,深度为h,则 D 。
(A) n=h+m (B) h+m=2n (C)m=h-1 (D)n=2h-19.某二叉树的先序序列和后序序列正好相反,则下列说法错误的是 A 。
(A) 二叉树不存在(B) 若二叉树不为空,则二叉树的深度等于结点数(C) 若二叉树不为空,则任一结点不能同时拥有左孩子和右孩子(D) 若二叉树不为空,则任一结点的度均为110.对二叉树的结点从1开始进行编号,要求每个结点的编号大于其左右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用 A 遍历实现编号。
(A) 先序(B)中序(C)后序(D)层序11.一个具有1025个结点的二叉树的高h为 C 。
(A) 10 (B)11 (C)11~1025 (D)10~102412.设n,m为一棵二叉树上的两个结点,在中序遍历时,n在m前的条件是 C 。
( A) n在m右方(B)n是m祖先(C) n在m左方(D) n是m子孙13.实现对任意二叉树的后序遍历的非递归算法而不使用栈结构,最佳方案是二叉树采用 C 存储结构。
(A) 二叉链表(B) 广义表(C)三叉链表(D)顺序14. 一棵树可转换成为与其对应的二叉树,则下面叙述正确的是 A 。
(A) 树的先根遍历序列与其对应的二叉树的先序遍历相同(B) 树的后根遍历序列与其对应的二叉树的后序遍历相同(C) 树的先根遍历序列与其对应的二叉树的中序遍历相同(D) 以上都不对二、填空题1.对一棵具有n个结点的二叉树,当它为一棵完全二叉树时具有最小高度;当它为单分支二叉树时,具有最大高度。
2.在二叉树的第i(i≥1)层上至多有2^(i-1) 个结点,深度为k(k≥1)的完全二叉树至多2^(k)-1 个结点,最少2^(k-1) 个结点;3.如果二叉树的终端结点数为n0,度为2的结点数为n2,则n0 = n2+1 。
4.已知一棵二叉树的中序序列是cbedahgijf,后序序列是cedbhjigfa,则该二叉树的先序序列是abcdefghij ,该二叉树的深度为 5 。
5.若一棵二叉树的中序遍历结果为ABC,则该二叉树有3中不同的形态。
6.在顺序存储的二叉树中,下标为i和j的两个结点处在同一层的条件是log(2)i=log(2)j 。
7.已知完全二叉树的第7层有8个结点,则其叶子结点数为36个。
总结点数为71个。
8.在对二叉树进行非递归中序遍历过程中,需要用栈来暂存所访问结点的地址;进行层序遍历过程中,需要用队列来暂存所访问结点的地址;9.高度为h,度为k的树中至少有h+k-1 个结点,至多有k^(h)-1 个结点。
10.一维数组存放完全二叉树:ABCDEFGHI,则后序遍历该二叉树的序列为HIDEBFGCA 。
三、应用题1. 应用题:说明分别满足下列条件的二叉树各是什么?⑴先序遍历和中序遍历相同;空树,只有一个跟节点或右单分支二叉树。
⑵中序遍历和后序遍历相同;空树,只有一个根节点或左单分支二叉树。
⑶先序遍历和后序遍历相同;空树,只有一个根节点的二叉树。
2. 已知一棵二叉树的中序序列是cbedahgijf,后序序列是cedbhjigfa,画出这棵二叉树的逻辑结构图。
A FB GC D H IE J3.一棵二叉树的先序、中序、后序序列如下,其中一部分未标出,试构造出该二叉树。
先序序列: A B C D E F G H I J K中序序列:C B E D F A H J K I G后序序列: C E F D B K J I H G A4.有n个结点的二叉树,已知叶子结点个数为n0,回答下列问题:(1)写出求度为1的结点的个数n1的计算公式;(2)若此树是深度为k的完全二叉树,写出n为最小的公式;(3)若二叉树中仅有度为0和度为2的结点,写出求该二叉树结点个数n的公式;(1) n1=n+1-2n0(2) n(min)=2^(k-1)(3) n=2n0-1四、算法设计题1.编写求二叉树BT中结点总数的算法。
int BTreeCount(BTreeNode *BT) //二叉树中结点的总数{if(BT==NULL)return 0;else if(BT->left==NULL&&BT->right==NULL)return 1;elsereturn BTreeCount(BT->left)+BTreeCount(BT->right)+1;}2.编写求二叉树BT中叶子结点数的算法。
int BTreeCount(BTreeNode *BT) //二叉树中结点的总数{if(BT==NULL)return 0;else if(BT->left==NULL&&BT->right==NULL)return 1;elsereturn BTreeCount(BT->left)+BTreeCount(BT->right);}3.若已知两棵二叉树BT1和BT2皆为空,或者皆不为空且BT1的左、右子树和BT2的左、右子树分别相似,则称二叉树BT1和BT2相似。
编写算法,判别给定的两棵二叉树是否相似。
int BTreeSim(BTreeNode *BT1,BTreeNode *BT1){if(! BT1 && ! BT2) return 1;else if(! BT1||! BT2) return 0;elsereturnBTreeSim(BT1->lchild,BT2->lchile)&&BTreeSim(BT1->rchild,BT2->rchild);}4.编写算法,求二叉树中以元素值为x的结点为根的子树的深度。
int BTreeSim(BTreeNode *BT , ElemType x){if(! BT) return 0;else if(BT->data==x) return DepthBTree(B)T;else if(BT->lchild!=NULL) return Get_Sub_Depth(BT->lchild ,x);else if(BT->rchild!=NULL) return Get_Sub_Depth(B)T->rchild,x;else return 0;}int DepthBTree(BTreeNode *BT) //求二叉树BT的深度{if(!BT) return 0;else{int dep1=DepthBTree(BT->lchild);int dep2=DepthBTree(BT->rchild);if(dep1>dep2)return dep1+1;elsereturn dep2+1;}}5.编写算法,计算二叉树中度为1的结点数和度为2的结点数。
int s1=0,s2=0;void BTreebranch(BTreeNode *BT){if(BT!=NULL){if(BT->lchild!=NULL){if(BT->rchild!=NULL) s2++;else s1 ++;BTreebranch(BT->lchild);}if(BT->rchild!=NULL){if(BT->lchild!=NULL) s1++;BTreebranch(B)T->rchild;}}}6.试利用栈的基本操作编写一个先序遍历的非递归算法。
Void PreOrder(BTreeNode *BT){InitStack(S);Push(S,T);While(!StackEmpty(S)){While(gettop(S,p)&&p){visit(p->data);Push(S,p->lchild);}Pop(S,p);if(!StackEmtpy(S)){Pop(S,p);Push(S,p->rchild);}}}。