习题4参考答案一、单项选择题1.A2.A3.A4.B5.BA6.C7.A8.A9.C10.C11.C12.C13.B14.D15.A16.B二、填空题1.线性结构,顺序结构,以行为主序,以列为主序2.i×n+j个元素位置3.5,34.((0,2,2),(1,0,3),(2,2,-1),(2,3,5))5.n×(n+1)/26.e7.418.head(head(tail(Ls)))9.(d1-c1+1)×(d2-c2+1)×(d3-c3+1)10.913三、判断题1.×2.√3.√4.√5.×6.×7.√8.×9.×10.√11.√12.√13.×14.√15.√-2-第5章树习题5一、单项选择题1.在一棵度为3的树中,度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为()个。A.4B.5C.6D.72.假设在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为()个。A.15B.16C.17D.473.假定一棵三叉树的结点数为50,则它的最小高度为()。A.3B.4C.5D.64.在一棵二叉树上第4层的结点数最多为()。A.2B.4C.6D.85.用顺序存储的方法将完全二叉树中的所有结点逐层存放在数组中R[1..n],结点R[i]若有左孩子,其左孩子的编号为结点()。A.R[2i+1]B.R[2i]C.R[i/2]D.R[2i-1]6.由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为()。A.24B.48C.72D.537.线索二叉树是一种()结构。A.逻辑B.逻辑和存储C.物理D.线性8.线索二叉树中,结点p没有左子树的充要条件是()。A.p-lc=NULLB.p-ltag=1C.p-ltag=1且p-lc=NULLD.以上都不对9.设n,m为一棵二叉树上的两个结点,在中序遍历序列中n在m前的条件是()。A.n在m右方B.n在m左方C.n是m的祖先D.n是m的子孙10.如果F是由有序树T转换而来的二叉树,那么T中结点的前序就是F中结点的()。A.中序B.前序C.后序D.层次序11.欲实现任意二叉树的后序遍历的非递归算法而不必使用栈,最佳方案是二叉树采用()存储结构。A.三叉链表B.广义表C.二叉链表D.顺序-3-12.下面叙述正确的是()。A.二叉树是特殊的树B.二叉树等价于度为2的树C.完全二叉树必为满二叉树D.二叉树的左右子树有次序之分13.任何一棵二叉树的叶子结点在先序、中序和后序遍历序列中的相对次序()。A.不发生改变B.发生改变C.不能确定D.以上都不对14.已知一棵完全二叉树的结点总数为9个,则最后一层的结点数为()。A.1B.2C.3D.415.根据先序序列ABDC和中序序列DBAC确定对应的二叉树,该二叉树()。A.是完全二叉树B.不是完全二叉树C.是满二叉树D.不是满二叉树二、判断题1.二叉树中每个结点的度不能超过2,所以二叉树是一种特殊的树。()2.二叉树的前序遍历中,任意结点均处在其子女结点之前。()3.线索二叉树是一种逻辑结构。()4.哈夫曼树的总结点个数(多于1时)不能为偶数。()5.由二叉树的先序序列和后序序列可以唯一确定一颗二叉树。()6.树的后序遍历与其对应的二叉树的后序遍历序列相同。()7.根据任意一种遍历序列即可唯一确定对应的二叉树。()8.满二叉树也是完全二叉树。()9.哈夫曼树一定是完全二叉树。()10.树的子树是无序的。()三、填空题1.假定一棵树的广义表表示为A(B(E),C(F(H,I,J),G),D),则该树的度为_____,树的深度为_____,终端结点的个数为______,单分支结点的个数为______,双分支结点的个数为______,三分支结点的个数为_______,C结点的双亲结点为_______,其孩子结点为_______和_______结点。2.设F是一个森林,B是由F转换得到的二叉树,F中有n个非终端结点,则B中右指针域为空的结点有_______个。3.对于一个有n个结点的二叉树,当它为一棵________二叉树时具有最小高度,即为_______,当它为一棵单支树具有_______高度,即为_______。4.由带权为3,9,6,2,5的5个叶子结点构成一棵哈夫曼树,则带权路径长度为___。5.在一棵二叉排序树上按_______遍历得到的结点序列是一个有序序列。6.对于一棵具有n个结点的二叉树,当进行链接存储时,其二叉链表中的指针域的总数为_______个,其中_______个用于链接孩子结点,_______个空闲着。-4-7.在一棵二叉树中,度为0的结点个数为n0,度为2的结点个数为n2,则n0=______。8.一棵深度为k的满二叉树的结点总数为_______,一棵深度为k的完全二叉树的结点总数的最小值为_____,最大值为______。9.由三个结点构成的二叉树,共有____种不同的形态。10.设高度为h的二叉树中只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为____。11.一棵含有n个结点的k叉树,______形态达到最大深度,____形态达到最小深度。12.对于一棵具有n个结点的二叉树,若一个结点的编号为i(1≤i≤n),则它的左孩子结点的编号为________,右孩子结点的编号为________,双亲结点的编号为________。13.对于一棵具有n个结点的二叉树,采用二叉链表存储时,链表中指针域的总数为_________个,其中___________个用于链接孩子结点,_____________个空闲着。14.哈夫曼树是指________________________________________________的二叉树。15.空树是指________________________,最小的树是指_______________________。16.二叉树的链式存储结构有______________和_______________两种。17.三叉链表比二叉链表多一个指向______________的指针域。18.线索是指___________________________________________。19.线索链表中的rtag域值为_____时,表示该结点无右孩子,此时______域为指向该结点后继线索的指针。20.本节中我们学习的树的存储结构有_____________、___________和___________。四、应用题1.已知一棵树边的集合为{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的兄弟?(8)结点b和n的层次号分别是什么?(9)树的深度是多少?(10)以结点c为根的子树深度是多少?2.一棵度为2的树与一棵二叉树有何区别。3.试分别画出具有3个结点的树和二叉树的所有不同形态?4.已知用一维数组存放的一棵完全二叉树:ABCDEFGHIJKL,写出该二叉树的先序、中序和后序遍历序列。5.一棵深度为H的满k叉树有如下性质:第H层上的结点都是叶子结点,其余各层-5-上每个结点都有k棵非空子树,如果按层次自上至下,从左到右顺序从1开始对全部结点编号,回答下列问题:(1)各层的结点数目是多少?(2)编号为n的结点的父结点如果存在,编号是多少?(3)编号为n的结点的第i个孩子结点如果存在,编号是多少?(4)编号为n的结点有右兄弟的条件是什么?其右兄弟的编号是多少?6.找出所有满足下列条件的二叉树:(1)它们在先序遍历和中序遍历时,得到的遍历序列相同;(2)它们在后序遍历和中序遍历时,得到的遍历序列相同;(3)它们在先序遍历和后序遍历时,得到的遍历序列相同;7.假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请写出该二叉树的后序遍历序列。8.假设一棵二叉树的后序序列为DCEGBFHKJIA,中序序列为DCBGEAHFIJK,请写出该二叉树的后序遍历序列。9.给出如图5-14所示的森林的先根、后根遍历结点序列,然后画出该森林对应的二叉树。10.给定一组权值(5,9,11,2,7,16),试设计相应的哈夫曼树。五、算法设计题1.一棵具有n个结点的完全二叉树以一维数组作为存储结构,试设计一个对该完全二叉树进行先序遍历的算法。2.给定一棵用二叉链表表示的二叉树,其中的指针t指向根结点,试写出从根开始,按层次遍历二叉树的算法,同层的结点按从左至右的次序访问。3.写出在中序线索二叉树中结点P的右子树中插入一个结点s的算法。4.给定一棵二叉树,用二叉链表表示,其根指针为t,试写出求该二叉树中结点n的双亲结点的算法。若没有结点n或者该结点没有双亲结点,分别输出相应的信息;若结点n有双亲,输出其双亲的值。ABDEFCGHJIKNOML图5-14-6-习题5参考答案一、单项选择题1.C2.B3.C4.D5.B6.D7.C8.B9.B10.B11.A12.D13.A14.B15.A二、判断题1.×2.√3.×4.√5.×6.√7.√8.√9.×10.×三、填空题1.3,4,6,1,1,2,A,F,G2.n+13.完全,2log(1)n,最大,n4.555.中序6.2n,n-1,n+17.n2+18.2k-1,2k-1,2k-19.510.2h-111.单支树,完全二叉树12.2i,2i+1,i/2(或i/2)13.2n,n-1,n+114.带权路径长度最小15.结点数为0,只有一个根结点的树16.二叉链表,三叉链表17.双亲结点18.指向结点前驱和后继信息的指针19.1,RChild20.孩子表示法,双亲表示法,长子兄弟表示法四、应用题1.解答:根据给定的边确定的树如图5-15所示。其中根结点为a;叶子结点有:d、m、n、j、k、f、l;c是结点g的双亲;abcdegfhimnjki图5-15-7-a、c是结点g的祖先;j、k是结点g的孩子;m、n是结点e的子孙;e是结点d的兄弟;g、h是结点f的兄弟;结点b和n的层次号分别是2和5;树的深度为5。2.解答:度为2的树有两个分支,但分支没有左右之分;一棵二叉树也有两个分支,但有左右之分,左右子树不能交换。3.解答:略4.解答:先序序列:ABDHIEJKCFLG中序序列:HDIBJEKALFCG后序序列:HIDJKEBLFGCA5.解答:(1)第i层上的结点数目是mi-1。(2)编号为n的结点的父结点如果存在,编号是((n-2)/m)+1。(3)编号为n的结点的第i个孩子结点如果存在,编号是(n-1)*m+i+1。(4)编号为n的结点有右兄弟的条件是(n-1)%m≠0。其右兄弟的编号是n+1。6.解答:(1)先序序列和中序序列相同的二叉树为:空树或者任一结点均无左孩子的非空二叉树;(2)中序序列和后序序列相同的二叉树为:空树或者任一结点均无右孩子的非空二叉树;(3)先序序列和后序序列相同的二叉树为:空树或仅有一个结点的二叉树。7.解答:后序序列:ACDBGJKIHFE8.解答:先序序列:ABCDGEIHFJK9.解答:先根遍历:ABCDEFGHIJKLMNO后根遍历:BDEFCAHJIGKNOML森林转换成二叉树如图5-16所示。10.解答:构造而成的哈夫曼树如图5-17所示。50920301116147725图5-17BGDCHKEIFJLMNOA图5-16-8-五、算法设计题1.解答:这个问题可以用递归算法,也可用非递归算法,下面给出的为非递归算法。假设该完全二叉树的结点以层次为序,按照从上到下,同层从左到右顺序编号,存放在一个一维数组R[1..n]中,且用一个有足够大容量为maxlen的顺序栈作辅助存储,算法描述如下: