数据结构第二单元练习题答案
一、选择
1.树最适合用来表示( )
A.有序数据元素 B.无序数据元素 C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据 2.在下述结论中,正确的是( )
①只有一个结点的二叉树的度为0; ②二叉树的度为2; ③二叉树的左右子树可任意交换;
④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。 A.①②③ B.②③④ C.②④ D.①④ 3.以下说法正确的是( )
A.任何一棵二叉树中至少有一个结点的度为2 B.任何一棵二叉树中每个结点的度都为2 C.任何一棵二叉树的度肯定等于2 D.任何一棵二叉树的度可以小于2
4.在下列情况中,可称为二叉树的是( )
A.每个结点至多有两棵子树的树 B.哈夫曼树 C.每个结点至多有两棵子树的有序树
D.每个结点只有一棵右子树 E.以上答案都不对 5.深度为h的满m叉树的第k层有( )个结点(1= k-1 kh-1h A.m B.m-1 C.m D.m-1 6.在一棵高度为k的满二叉树中,结点总数为( ) k-1 k kkA.2B.2C.2-1 D.?log2?+1 7.在一棵三元树中度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为( )个 A.4 B.5 C.6 D.7 8.具有10个叶结点的二叉树中有( )个度为2的结点。 A.8 B.9 C.10 D.ll 9.二叉树有n个结点,则其深度为( ) A.n-1 B.n C.(log2n)+`1 D.无法确定 该题是二叉树不是完全二叉树 由二叉树结点的公式:n=n0+n1+n2=n0+n1+(n0-1)=2n0+n1-1, 因为n=1001,所以1002=2n0+n1,在完全二叉树树中,n1只能取0或1,在本题中只能取0,故n=501,因此选E。 10.一个具有1025个结点的二叉树的高h为( ) A.11 B.10 C.11至1025之间 D.10至1024之间 11.一棵具有 n个结点的完全二叉树的深度是( ) A.?log2n?+1 B.log2n+1 C.?log2n? D.log2n-1 12.将有关二叉树的概念推广到三叉树,则一棵有244个结点的完全三叉树的高度( ) A.4 B.5 C.6 D.7 13.将一棵有100个结点的完全二叉树从根结点这一层开始,每一层上从左到右依次对结点编号,根结点的编号为1,则编号为49的结点的左孩子编号为( ) A.98 B.99 C.50 D.48 利用二叉树的性质5 14.在完全二叉树中,若一个结点是叶结点,则它没( ) A.左子结点 B.右子结点 C.左子结点和右子结点 D.左子结点,右子结点和兄弟结点 15.当一棵有n个结点的二叉树按层次从上到下,同层次从左到右将数据存放在一维数组 A[l..n]中时,数组中第i个结点的左孩子为( ) A.A[2i](2i= 16.在下列存储形式中,( )不是树的存储形式? A.双亲表示法 B.孩子链表表示法 C.孩子兄弟表示法 D.顺序存储表示法 17.以下说法错误的是( ) A.完全二叉树上结点之间的父子关系可由它们编号之间的关系来表达 B.三叉链表,二叉树求双亲运算很容易实现 C.在二叉链表上,求左.右孩子等很容易实现 D.在二叉链表上,求双亲运算的时间性能很好 18.对二叉树从1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一个结点的左右孩子中,其左孩子的编号小于其右孩子的编号,则可采用( )次序的遍历实现编号。 A.先序遍历 B.中序遍历 C.后序遍历 D.从根开始的层次遍历 19.某二叉树T有n个结点,设按某种顺序对T中的每个结点进行编号,编号为1,2,? ,n,且有如下性质:T中任一结点V,其编号等于左子树上的最小编号减1,而V的右子树的结点中,其最小编号等于V左子树上结点的最大编号加1。这时是按( )编号的。 A.中序遍历序列 B.前序遍历序列 C.后序遍历序列 D.层次顺序 20.一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足( ) A.所有的结点均无左孩子 B.所有的结点均无右孩子 C.只有一个叶子结点 D.是任意一棵二叉树 先序序列是“根左右”,后序序列是“左右根”,若要这两个序列相反,只有单支树,所以本题的A和B均对,单支树的特点是只有一个叶子结点,故C是最合适的,选C。A或B都不全 21.对含有( )个结点的非空二叉树,采用任何一种遍历方式,其结点访问序列均相同。 A.0 B.1 C.2 D.不存在这样的二叉树 22.下面的说法中正确的是( ) (1)任何一棵二叉树的叶子结点在三种遍历中的相对次序不变; (2)按二叉树定义,具有三个结点的二叉树共有6种。 A. (1)(2) B. (1) C. (2) D. (1).(2)都错 23.以下说法错误的是( ) A.存在这样的二叉树,对它采用任何次序的遍历,其结点访问序列均相同 B.二叉树是树的特殊情形 C.由树转换成二叉树,根结点右子树总是空的 D.在二叉树只有一棵子树的情况下也要明确指出该子树是左子树还是右子树 24.以下说法正确的是( ) A.一般来说,若深度为k的n个结点的二叉树具有最小路径长度,那么从根结点到第k-1 k-1k-1 层具有最多的结点数为2-1余下的n-2+1个结点在第k层的任一位置上 B.若有一个结点是某二叉树子树的先序遍历序列中的最后一个结点,则它必是该子树的后序遍历序列中的最后一个结点。 C.若一个结点是某二叉树子树的前序遍历序列中的最后一个结点,则它必是该子树的中序遍历序列中的最后一个结点。 25.以下说法正确的是( ) A.若一个树叶是某二叉树子树的前序遍历序列中的最后一个结点,则它必是该子树的后序遍历序列中的最后一个结点。 B.若一个树叶是某二叉树子树的前序遍历序列中的最后一个结点,则它必是该子树的中序离历序列中的最后一个结点 C.二叉树中,具有两个孩子的父结点,在中序遍历序列中,它的后继结点最多只能有一个孩子结点。 D.在二叉树中,具有一个孩子结点,在中序遍历序列中,它没有后继孩子结点。 26.以下说法错误的是( ) A.赫夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近。 B.若一个二叉树的树叶是某子树的中序遍历序列中的第一个结点,则它必是该子树的后序遍历序列中的第一个结点。 C.已知二叉树的前序遍历和后序遍历序列并不能惟一地确定这棵树,因为不知道树的根结点是哪一个。 D.在前序遍历二叉树的序列中,任何结点的子树的所有结点都是直接根在该结点的之后。 27.以下说法正确的是( ) A.若一个树叶是某二叉树前序遍历序列中的最后一个结点,则它必是该子树后序遍历序列中的最后一个结点. B.若一个树叶是某二叉树前序遍历序列中的最后一个结点,则它必是该子树中序遍历序列中的最后一个结点. C.在二叉树中,具有两个子女的父结点,在中序遍历序列中,它的后继结点最多只能有一个子女结点. D.在二叉树中,具有一个子女的父结点,在中序遍历序列中,它没有后继子女结点 28.二叉树先序遍历:EFHIGJK;中序遍历: HFIEJKG 。该二叉树根的右子树的根是( ) A.E B.F C.G D.H 29.已知某二叉树的后续遍历序列是dabec,中序遍历序列是deabc,它的前序遍历序列是( ) A.acbed B.deabc C.decab D.cedba 30.某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,其后序遍历的结点访问顺序是( ) A.bdgcefha B.gdbecfha C.bdgechfa D.gdbehfca 31.若二叉树采用二叉链表存储结构,要交换其所有分支结点左.右子树的位置,利用( )遍历方法最合适。 A.前序 B.中序 C.后序 D.按层次 32.已知一算术表达式的中缀形式为 A+B*C-D/E,后缀形式为ABC*+DE/-,其前缀形式为( ) A.-A+B*C/DE B.-A+B*CD/E C.-+*ABC/DE D.-+A*BC/DE 33.算术表达式a+b*(c+d/e)转为后缀表达式后为( ) A.ab+cde/* B.abcde/+*+ C.abcde/*++ D.abcde*/++ 34.一棵左右子树均不空的二叉树在先序线索化后,其空指针域数为( ) A.0 B.1 C.2 D.不确定 二叉树先序遍历序列的第一个结点无前驱,但第一个结点为根结点,有左孩子,所以左指针域不为空。最后一个结点无后继,而且是叶子结点,无右孩子,所以仍为空。其余结点均有前驱和后继,所以不会为空。 35.一棵左子树为空的二叉树在先序线索化后,其中空的链域的个数是( ) A.不确定 B.0 C.1 D.2 左子树为空的二叉树的根结点的左线索为空(无前驱),先序序列的最后结点的右线索为空(无后继),共2个空链域。 36.若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则x的前驱为( ) A.X的双亲 B.X的右子树中最左的结点 C.X的左子树中最右结点 D.X的左子树中最右叶结点 37.引入二叉线索树的目的是( ) A.加快查找结点的前驱或后继的速度 B.为了能在二叉树中方便的进行插入与删除 C.为了能方便的找到双亲 D.使二叉树的遍历结果唯一 38.n个结点的线索二叉树上含有的线索数为( ) A.2n B.n-l C.n+l D.n 线索二叉树是利用二叉树的空链域加上线索,n个结点的二叉树有n+1个空链域。 39.讨论树.森林和二叉树的关系,目的是为了( ) A.借助二叉树上的运算方法去实现对树的一些运算 B.将树.森林按二叉树的存储方式进行存储 C.将树.森林转换成二叉树 D.体现一种技巧,没有什么实际意义 40.利用二叉链表存储树,则根结点的右指针是( ) A.指向最左孩子 B.指向最右孩子 C.空 D.非空 41.如果T2是由有序树T转换而来的二叉树,那么T中结点的后序就是T2中结点的( ) A.先序 B.中序 C.后序 D.层次序 42.树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序.中序和后序三种遍历。我们把由树转化得到的二叉树称该树对应的二叉树,则下面 ( )是正确的。 A.树的先根遍历序列与其对应的二叉树先序遍历序列相同 B.树的后根遍历序列与其对应的二叉树后序遍历序列相同 C.树的先根遍历序列与其对应的二叉树中序遍历序列相同 D.以上都不对 43.以下说法正确的是( ) A.先根遍历树和先序遍历与该树对应的二叉树,其结果不同 B.后根遍历树和先序遍历与该树对应的二叉树,其结果不同 C.先序遍历森林和先序遍历与该森林对应的二叉树,其结果不同 D.中序遍历森林和中序遍历与该森林对应的二叉树,其结果不同 44.森林T中有4棵树,第一.二.三.四棵树的结点个数分别是n1,n2,n3,n4,那么当把森林T转换成一棵二叉树后,且根结点的左孩子上有( )个结点。 A.n1-1 B.n1 C.n1+n2+n3 D.n2+n3+n4 45.设森林F对应的二叉树为B,它有m个结点,B的根为p,p的右子树结点个数为n,森林F中第一棵树的结点个数是( ) A.m-n B.m-n-1 C.n+1 D.条件不足,无法确定 46.设F是一个森林,B是由F变换得的二叉树。若F中有n个非终端结点,则B中右指针域为空的结点有( )个 A.n-1 B.n C.n+1 D.n+2 47.以下说法错误的是( ) A.一般在哈夫曼树中,权值越大的叶子离根结点越近 B.哈夫曼树中没有度数为1的分支结点 C.若初始森林中共有N棵二树,最终求得的哈夫曼树中共有2N-1个结点 D.若初始森林中共有N棵二叉树,进行2N-1次合并后才能剩下最终的哈夫曼树 48.以下说法错误的是( ) A.一般在赫夫曼树中,权值越大的叶子离根结点越近 B.赫夫曼树中没有度数为1的分支结点 C.若初始森林中共有n棵二叉树,最终求得的赫夫曼树共有2n-1个结点 D.若初始森林中共有n棵二叉树,进行2n-1次合并后才能剩下一棵最终的赫夫曼树 49.设有13个值,用它们组成一棵哈夫曼树,则该哈夫曼树共有( )个结点. A.13 B.12 C.26 D.25 50.若度为m的哈夫曼树中,其叶结点个数为n,则非叶结点的个数为( ) A.n-1 B.?n/m?-1 C.?(n-1)/(m-1)? D. ?n/(m-1)?-1 E.?(n+1)/(m+1)?-1 51.下述编码中哪一个不是前缀码( ) A.00,01,10,11 B.0,1,00,11 C.0,10,110,111 D. 1,01,000,001 二、填空 1.n(n>1)个结点的各棵树中,其深度最小的那棵树的深度是_(1) 2 __。它共有_(2) n-1 __个叶子结点和_(3) 1 __个非叶子结点,其中深度最大的那棵树的深度是_(4) n __,它共有_(5)_ 1 _个叶子结点和_(6) n-1__个非叶子结点。 2.如果结点A有 3个兄弟,而且B是A的双亲,则B的度是_4 _____。 3.二叉树由_(1) 根结点__,__(2) 左子树_,_(3) 右子树 __三个基本单元组成。 K+1 4.设只含根结点的二叉树的高度为0,则高度为k的二叉树的最大结点数为_(1)2-1___,最小结点数为_(2)_ k+1_。 5.在一棵二叉树中,度为零的结点的个数为N0,度为2的结点的个数为N2,则有N0 =__ N2+1____ 6.如某二叉树有20个叶子结点,有30个结点仅有一个孩子,则该二叉树的总结点数为___69___。 k-2 7.高度为K的完全二叉树至少有__2____个叶子结点。 8.高度为8的完全二叉树至少有___64 ___个叶子结点。 9.已知二叉树有50个叶子结点,则该二叉树的总结点数至少是_ 99_____。 10.已知一棵度为3的树有2个度为1的结点,3个度为2的结点,4个度为3的结点,则该树有___12 ___个叶子结点。 11.一棵树T中,包括一个度为1的结点,两个度为2的结点,三个度为3的结点,四个度为4的结点和若干叶子结点,则T的叶结点数为__21____。