数据结构课后习题及解析第六章

合集下载

数据结构课后习题答案及解析第六章

数据结构课后习题答案及解析第六章

第六章树和二叉树(下载后用阅读版式视图或web版式可以看清)习题一、选择题1.有一“遗传”关系:设x是y的父亲,则x可以把它的属性遗传给y。

表示该遗传关系最适合的数据结构为( )。

A.向量B.树 C图 D.二叉树2.树最合适用来表示( )。

A.有序数据元素B元素之间具有分支层次关系的数据C无序数据元素 D.元素之间无联系的数据3.树B的层号表示为la,2b,3d,3e,2c,对应于下面选择的( )。

A. la (2b (3d,3e),2c)B. a(b(D,e),c)C. a(b(d,e),c)D. a(b,d(e),c)4.高度为h的完全二叉树至少有( )个结点,至多有( )个结点。

A. 2h_lB.h C.2h-1 D. 2h5.在一棵完全二叉树中,若编号为f的结点存在右孩子,则右子结点的编号为( )。

A. 2iB. 2i-lC. 2i+lD. 2i+26.一棵二叉树的广义表表示为a(b(c),d(e(,g(h)),f)),则该二叉树的高度为 ( )。

A.3B.4C.5D.67.深度为5的二叉树至多有( )个结点。

A. 31B. 32C. 16D. 108.假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为( )个。

A. 15B. 16C. 17D. 479.题图6-1中,( )是完全二叉树,( )是满二叉树。

..专业知识编辑整理..10.在题图6-2所示的二叉树中:(1)A结点是A.叶结点B根结点但不是分支结点 C根结点也是分支结点 D.分支结点但不是根结点(2)J结点是A.叶结点B.根结点但不是分支结点 C根结点也是分支结点 D.分支结点但不是根结点(3)F结点的兄弟结点是A.EB.D C.空 D.I(4)F结点的双亲结点是A.AB.BC.CD.D(5)树的深度为A.1B.2C.3D.4(6)B结点的深度为A.1B.2C.3D.4(7)A结点所在的层是A.1B.2C.3D.4..专业知识编辑整理..11.在一棵具有35个结点的完全二叉树中,该树的深度为( )。

罗文劼《数据结构与算法》第4版-第6章课后习题参考答案

罗文劼《数据结构与算法》第4版-第6章课后习题参考答案

第6章查找一、选择题1. B2. A3. C4. C5. D6. B7. C8. D9. D 10. D 11. C 12. D 13. B 14. C 15. B二、判断题1. Ⅹ2. √3. Ⅹ4. √5. Ⅹ6. √7. √8. Ⅹ9. Ⅹ 10. Ⅹ11. √ 12. √ 13. √ 14. √ 15. Ⅹ 16. Ⅹ 17. √ 18. Ⅹ 19. √ 20. √三、简答题1. 画出对长度为18的有序的顺序表进行折半查找时的判定树,并指出在等概率时查找成功的平均查找长度,以及查找失败时所需的最多的关键字比较次数。

【解答】(1)(2) 平均查找长度为1/18(1+2*2+3*4+4*8+5*3)=32/9查找最多比较5次。

2. 已知如下所示长度为12的关键字有序的表:{Jan, Feb, Mar, Apr, May, June, July, Aug, Sep, Oct, Nov, Dec}(1) 试按表中元素的顺序依次插入到一棵初始为空的二叉排序树,画出插入完成后的二叉排序树,并求其在等概率的情况下查找成功的平均查找长度。

(2) 若对表中元素先进行排序构成有序表,求在等概率的情况下查找成功的平均查找长度。

(3) 按表中元素的顺序构造一棵平衡二叉排序树,并求其在等概率的情况下查找成功的平均查找长度。

【解答】(1) 按关键字的顺序构造的二叉排序树:(2) 根据构造的二叉排序树,求查找成功时的平均查找长度: ASL SUCC =(1*1+2*2+3*3+4*3+5*2+6*1)/12=3.5(3) 若对表中元素先进行排序构成有序表再构造二叉排序树,则构造的二叉排序树是一棵单支树,在等概率的情况下查找成功的平均查找长度则为:ASL SUCC =(1+2+…+12)/12=6.5 这种情况就退化成为顺序查找。

3. 试推导含有12个结点的平衡二叉树的最大深度,并画出一棵这样的树。

【解答】令F k 表示含有最少结点的深度为k 的平衡二叉树的结点数目。

数据结构课后习题及解析第六章

数据结构课后习题及解析第六章

第六章习题1.试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。

2.对题1所得各种形态的二叉树,分别写出前序、中序和后序遍历的序列。

3.已知一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,……,nk个度为k的结点,则该树中有多少个叶子结点并证明之。

4.假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请画出该二叉树。

5.已知二叉树有50个叶子结点,则该二叉树的总结点数至少应有多少个?6.给出满足下列条件的所有二叉树:①前序和后序相同②中序和后序相同③前序和后序相同7. n个结点的K叉树,若用具有k个child域的等长链结点存储树的一个结点,则空的Child 域有多少个?8.画出与下列已知序列对应的树T:树的先根次序访问序列为GFKDAIEBCHJ;树的后根次序访问序列为DIAEKFCJHBG。

9.假设用于通讯的电文仅由8个字母组成,字母在电文中出现的频率分别为:0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10请为这8个字母设计哈夫曼编码。

10.已知二叉树采用二叉链表存放,要求返回二叉树T的后序序列中的第一个结点指针,是否可不用递归且不用栈来完成?请简述原因.11. 画出和下列树对应的二叉树:12.已知二叉树按照二叉链表方式存储,编写算法,计算二叉树中叶子结点的数目。

13.编写递归算法:对于二叉树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。

14.分别写函数完成:在先序线索二叉树T中,查找给定结点*p在先序序列中的后继。

在后序线索二叉树T中,查找给定结点*p在后序序列中的前驱。

15.分别写出算法,实现在中序线索二叉树中查找给定结点*p在中序序列中的前驱与后继。

16.编写算法,对一棵以孩子-兄弟链表表示的树统计其叶子的个数。

17.对以孩子-兄弟链表表示的树编写计算树的深度的算法。

18.已知二叉树按照二叉链表方式存储,利用栈的基本操作写出后序遍历非递归的算法。

《数据结构》吕云翔编著第6章图习题解答

《数据结构》吕云翔编著第6章图习题解答

第六章图习题解答一、选择题1.某无向图的邻接矩阵A=[010101010],可以看出该图共有()个顶点A.3B.6C.9D.以上答案均不正确【解答】A2.无向图的邻接矩阵是一个(),有向图的邻接矩阵是一个()A 上三角矩阵B 下三角矩阵C 对称矩阵D 无规律【解答】C,D3.下列命题正确的是()。

A 一个图的邻接矩阵表示是唯一的,邻接表表示也唯一B 一个图的邻接矩阵表示是唯一的,邻接表表示不唯一C 一个图的邻接矩阵表示不唯一的,邻接表表示是唯一D 一个图的邻接矩阵表示不唯一的,邻接表表示也不唯一【解答】B4. 在一个具有n 个顶点的有向完全图中包含有()条边:A n(n-1)/2B n(n-1)C n(n+1)/2D n2【解答】B5.一个具有n个顶点k条边的无向图是一个森林(n>k),则该森林中必有()棵树。

A kB nC n - kD 1【解答】C6.用深度优先遍历方法遍历一个有向无环图,并在深度优先遍历算法中按退栈次序打印出相应的顶点,则输出的顶点序列是()。

A 逆拓扑有序B 拓扑有序C 无序D 深度优先遍历序列【解答】A7. 关键路径是AOE网中()。

A 从源点到终点的最长路径B从源点到终点的最长路径C 最长的回路D 最短的回路【解答】A二、填空题1.设无向图G中顶点数为n,则图G至少有()条边,至多有()条边;若G为有向图,则至少有()条边,至多有()条边。

【解答】0,n(n-1)/2,0,n(n-1)2.任何连通图的连通分量只有一个,即是()。

【解答】其自身3.图的存储结构主要有两种,分别是()和()。

【解答】邻接矩阵,邻接表4.已知无向图G的顶点数为n,边数为e,其邻接表表示的空间复杂度为()。

【解答】O(n+e)5.已知一个有向图的邻接矩阵表示,计算第j个顶点的入度的方法是()。

【解答】求第j列的所有元素之和6.有向图G用邻接矩阵A[n][n]存储,其第i行的所有元素之和等于顶点i的()。

数据结构第6章习题答案

数据结构第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个叶子结点。

数据结构第六章图理解练习知识题及答案解析详细解析(精华版)

数据结构第六章图理解练习知识题及答案解析详细解析(精华版)

图1. 填空题⑴设无向图G中顶点数为n,则图G至少有()条边,至多有()条边;若G为有向图,则至少有()条边,至多有()条边。

【解答】0,n(n-1)/2,0,n(n-1)【分析】图的顶点集合是有穷非空的,而边集可以是空集;边数达到最多的图称为完全图,在完全图中,任意两个顶点之间都存在边。

⑵任何连通图的连通分量只有一个,即是()。

【解答】其自身⑶图的存储结构主要有两种,分别是()和()。

【解答】邻接矩阵,邻接表【分析】这是最常用的两种存储结构,此外,还有十字链表、邻接多重表、边集数组等。

⑷已知无向图G的顶点数为n,边数为e,其邻接表表示的空间复杂度为()。

【解答】O(n+e)【分析】在无向图的邻接表中,顶点表有n个结点,边表有2e个结点,共有n+2e个结点,其空间复杂度为O(n+2e)=O(n+e)。

⑸已知一个有向图的邻接矩阵表示,计算第j个顶点的入度的方法是()。

【解答】求第j列的所有元素之和⑹有向图G用邻接矩阵A[n][n]存储,其第i行的所有元素之和等于顶点i的()。

【解答】出度⑺图的深度优先遍历类似于树的()遍历,它所用到的数据结构是();图的广度优先遍历类似于树的()遍历,它所用到的数据结构是()。

【解答】前序,栈,层序,队列⑻对于含有n个顶点e条边的连通图,利用Prim算法求最小生成树的时间复杂度为(),利用Kruskal 算法求最小生成树的时间复杂度为()。

【解答】O(n2),O(elog2e)【分析】Prim算法采用邻接矩阵做存储结构,适合于求稠密图的最小生成树;Kruskal算法采用边集数组做存储结构,适合于求稀疏图的最小生成树。

⑼如果一个有向图不存在(),则该图的全部顶点可以排列成一个拓扑序列。

【解答】回路⑽在一个有向图中,若存在弧、、,则在其拓扑序列中,顶点vi, vj, vk的相对次序为()。

【解答】vi, vj, vk【分析】对由顶点vi, vj, vk组成的图进行拓扑排序。

数据结构肖启宏课后习题答案第六章

数据结构肖启宏课后习题答案第六章

一.名词解释(1)结点—— 树的结点包含一个数据及若干指向其子树的分支。

(2)结点的度—— 结点所拥有的子树数称为该结点的度。

(3)树的度—— 树中各结点度的最大值称为该树的度。

(4)二叉树—— 一棵非空的二叉树,每个结点至多只有两棵子树,分别称为左子树和右子树,左、右子树的次序不能任意交换,且左右子树又分别是一棵二叉树。

(5)哈夫曼树—— 带权路径长度最小的二叉树,即最优二叉树,也称为哈夫曼树。

二.判断题(下列各题,正确的请在前面的括号内打√;错误的打ㄨ) (1)√ (2)ㄨ (3)√ (4)√(5)√(6)ㄨ (7)ㄨ(8)√三.填空题1.结点拥有的子树数 2.度为零的3. 树内各结点度的最大值 4.深度(或高度) 5.2i-1 6. 2h -1 7. n-1 8.6 9.中序 10.5 11.20 12. ⎣⎦1log 2+n13.顺序存储结构和链式存储结构 14.最小 15.EBCAD16.(1) ABEFHCG (2).EBHFACG (3).EHFBGCA 17.空二叉树 18.4四.选择题(1)B (2)C (3)C (4)C (5)D(6)B (7)A (8)B (9)D (10)D(11)B (12)A (13)C五.简答题1.答:一般树(非空)除了根结点之外,每个结点有且仅有一个前驱结点,但每个结点都可以有多个互不相交的子集(后继结点)。

二叉树(若非空)除了根结点之外,每个结点有且仅有一个前驱结点,但每个结点至多只有两个后继结点,称为左子树和右子树,左、右子树的次序不能交换,且左右子树又分别都是二叉树。

一般树和二叉树主要有以下区别:二叉树结点的度最大为2,而一般树结点的最大度数无限制;一般树的结点无左、右之分,而二叉树的结点有左、右之分。

2.答:一棵度为2的树与一棵二叉树的区别在于:对于度为1的结点,度为2的树无须区分左右;对于二叉树必须有左右之分,且不能任意交换。

3.答:(1)A是根结点。

数据结构课后习题(第6章)

数据结构课后习题(第6章)

【课后习题】第6章树和二叉树网络工程2010级()班学号:姓名:一、填空题(每空1分,共16分)1.从逻辑结构看,树是典型的。

2.设一棵完全二叉树具有999个结点,则此完全二叉树有个叶子结点,有个度为2的结点,有个度为1的结点。

3.由n个权值构成的哈夫曼树共有个结点。

4.在线索化二叉树中,T所指结点没有左子树的充要条件是。

5.在非空树上,_____没有直接前趋。

6.深度为k的二叉树最多有结点,最少有个结点。

7.若按层次顺序将一棵有n个结点的完全二叉树的所有结点从1到n编号,那么当i为且小于n时,结点i的右兄弟是结点,否则结点i没有右兄弟。

8.N个结点的二叉树采用二叉链表存放,共有空链域个数为。

9.一棵深度为7的满二叉树有___ ___个非终端结点。

10.将一棵树转换为二叉树表示后,该二叉树的根结点没有。

11.采用二叉树来表示树时,树的先根次序遍历结果与其对应的二叉树的遍历结果是一样的。

12.一棵Huffman树是带权路径长度最短的二叉树,权值的外结点离根较远。

二、判断题(如果正确,在对应位置打“√”,否则打“⨯”。

每题0.5分,共5分)1.对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i-1个结点。

2.二叉树的前序遍历并不能唯一确定这棵树,但是,如果我们还知道该二叉树的根结点是那一个,则可以确定这棵二叉树。

3.一棵树中的叶子结点数一定等于与其对应的二叉树中的叶子结点数。

4.度≤2的树就是二叉树。

5.一棵Huffman树是带权路径长度最短的二叉树,权值较大的外结点离根较远。

6.采用二叉树来表示树时,树的先根次序遍历结果与其对应的二叉树的前序遍历结果是一样的。

7.不存在有偶数个结点的满二叉树。

8.满二叉树一定是完全二叉树,而完全二叉树不一定是满二叉树。

9.已知二叉树的前序遍历顺序和中序遍历顺序,可以惟一确定一棵二叉树;10.已知二叉树的前序遍历顺序和后序遍历顺序,不能惟一确定一棵二叉树;三、单项选择(请将正确答案的代号填写在下表对应题号下面。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第六章习题1.试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。

2.对题1所得各种形态的二叉树,分别写出前序、中序和后序遍历的序列。

3.已知一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,……,nk个度为k的结点,则该树中有多少个叶子结点并证明之。

4.假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请画出该二叉树。

5.已知二叉树有50个叶子结点,则该二叉树的总结点数至少应有多少个?6.给出满足下列条件的所有二叉树:①前序和后序相同②中序和后序相同③前序和后序相同7. n个结点的K叉树,若用具有k个child域的等长链结点存储树的一个结点,则空的Child 域有多少个?8.画出与下列已知序列对应的树T:树的先根次序访问序列为GFKDAIEBCHJ;树的后根次序访问序列为DIAEKFCJHBG。

9.假设用于通讯的电文仅由8个字母组成,字母在电文中出现的频率分别为:0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10请为这8个字母设计哈夫曼编码。

10.已知二叉树采用二叉链表存放,要求返回二叉树T的后序序列中的第一个结点指针,是否可不用递归且不用栈来完成?请简述原因.11. 画出和下列树对应的二叉树:112.已知二叉树按照二叉链表方式存储,编写算法,计算二叉树中叶子结点的数目。

13.编写递归算法:对于二叉树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。

14.分别写函数完成:在先序线索二叉树T中,查找给定结点*p在先序序列中的后继。

在后序线索二叉树T中,查找给定结点*p在后序序列中的前驱。

15.分别写出算法,实现在中序线索二叉树中查找给定结点*p在中序序列中的前驱与后继。

16.编写算法,对一棵以孩子-兄弟链表表示的树统计其叶子的个数。

17.对以孩子-兄弟链表表示的树编写计算树的深度的算法。

18.已知二叉树按照二叉链表方式存储,利用栈的基本操作写出后序遍历非递归的算法。

19.设二叉树按二叉链表存放,写算法判别一棵二叉树是否是一棵正则二叉树。

正则二叉树是指:在二叉树中不存在子树个数为1的结点。

20.计算二叉树最大宽度的算法。

二叉树的最大宽度是指:二叉树所有层中结点个数的最大值。

21.已知二叉树按照二叉链表方式存储,利用栈的基本操作写出先序遍历非递归形式的算法。

22. 证明:给定一棵二叉树的前序序列与中序序列,可唯一确定这棵二叉树;给定一棵二叉树的后序序列与中序序列,可唯一确定这棵二叉树;23. 二叉树按照二叉链表方式存储,编写算法,计算二叉树中叶子结点的数目。

24. 二叉树按照二叉链表方式存储,编写算法,将二叉树左右子树进行交换。

实习题1.[问题描述] 建立一棵用二叉链表方式存储的二叉树,并对其进行遍历(先序、中序和后序),打印输出遍历结果。

[基本要求] 从键盘接受输入先序序列,以二叉链表作为存储结构,建立二叉树(以先序来建立)并对其进行遍历(先序、中序、后序),然后将遍历结果打印输出。

要求采用递归和非递归两种方法实现。

[测试数据] ABCффDEфGффFффф(其中ф表示空格字符)输出结果为:先序:ABCDEGF中序:CBEGDFA后序:CGBFDBA2.已知二叉树按照二叉链表方式存储,编写算法,要求实现二叉树的竖向显示(竖向显示就是二叉树的按层显示)。

3.如题1要求建立好二叉树,按凹入表形式打印二叉树结构,如下图所示。

2.按凹入表形式打印树形结构,如下图所示。

第六章答案36.1分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。

【解答】具有3个结点的树具有3个结点的二叉树6.3已知一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,……,n k个度为k的结点,则该树中有多少个叶子结点?【解答】设树中结点总数为n,则n=n0 + n1 + …… + n k树中分支数目为B,则B=n1 + 2n2 + 3n3+ …… + kn k因为除根结点外,每个结点均对应一个进入它的分支,所以有n= B + 1即n0 + n1 + …… + n k = n1 + 2n2 + 3n3+ …… + kn k + 1由上式可得叶子结点数为:n0 = n2 + 2n3+ …… + (k-1)n k + 16.5已知二叉树有50个叶子结点,则该二叉树的总结点数至少应有多少个?【解答】n0表示叶子结点数,n2表示度为2的结点数,则n0 = n2+1所以n2=n0 –1=49,当二叉树中没有度为1的结点时,总结点数n=n0+n2=996.6 试分别找出满足以下条件的所有二叉树:(1) 前序序列与中序序列相同;(2) 中序序列与后序序列相同;(3) 前序序列与后序序列相同。

【解答】(1) 前序与中序相同:空树或缺左子树的单支树;(2) 中序与后序相同:空树或缺右子树的单支树;(3) 前序与后序相同:空树或只有根结点的二叉树。

6.9 假设通讯的电文仅由8个字母组成,字母在电文中出现的频率分别为:0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10请为这8个字母设计哈夫曼编码。

【解答】构造哈夫曼树如下:哈夫曼编码为:I 1:11111I5:1100I 2:11110I6:10I 3:1110 I7: 01I 4:1101 I8: 006.11画出如下图所示树对应的二叉树。

5【解答】6.15分别写出算法,实现在中序线索二叉树T中查找给定结点*p在中序序列中的前驱与后继。

在先序线索二叉树T中,查找给定结点*p在先序序列中的后继。

在后序线索二叉树T中,查找给定结点*p在后序序列中的前驱。

(1)找结点的中序前驱结点BiTNode *InPre (BiTNode *p)/*在中序线索二叉树中查找p的中序前驱结点,并用pre指针返回结果*/{ if (p->Ltag= =1) pre = p->LChild; /*直接利用线索*/else{/*在p的左子树中查找“最右下端”结点*/for ( q=p->LChild; q->Rtag= =0; q=q->RChild);pre = q;}return (pre);}(2)找结点的中序后继结点BiTNode *InSucc (BiTNode *p)/*在中序线索二叉树中查找p的中序后继结点,并用succ指针返回结果*/ { if (p->Rtag= =1) succ = p->RChild; /*直接利用线索*/else{/*在p的右子树中查找“最左下端”结点*/for ( q=p->RChild; q->Ltag= =0; q=q->LChild);succ= q;}return (succ);}(3) 找结点的先序后继结点BiTNode *PreSucc (BiTNode *p)/*在先序线索二叉树中查找p的先序后继结点,并用succ指针返回结果*/ { if (p->Ltag= =0) succ = p->LChild;else succ= p->RChild;7return (succ);}(4) 找结点的后序前驱结点BiTNode *SuccPre (BiTNode *p)/*在后序线索二叉树中查找p的后序前驱结点,并用pre指针返回结果*/{ if (p->Ltag= =1) pre = p->LChild;else pre= p->RChild;return (pre);}6.21已知二叉树按照二叉链表方式存储,利用栈的基本操作写出先序遍历非递归形式的算法。

【解答】Void PreOrder(BiTree root) /*先序遍历二叉树的非递归算法*/{InitStack(&S);p=root;while(p!=NULL || !IsEmpty(S) ){ if(p!=NULL){Visit(p->data);push(&S,p);p=p->Lchild;}else{Pop(&S,&p);p=p->RChild;}}}6.24已知二叉树按照二叉链表方式存储,编写算法,将二叉树左右子树进行交换。

【解答】算法(一)Void exchange ( BiTree root ){p=root;if ( p->LChild != NULL || p->RChild != NULL ){temp = p->LChild;p->LChild = p->RChild;p->RChild = temp;exchange ( p->LChild );exchange ( p->RChild );}}算法(二)Void exchange ( BiTree root ){p=root;if ( p->LChild != NULL || p->RChild != NULL )9{exchange ( p->LChild );exchange ( p->RChild );temp = p->LChild;p->LChild = p->RChild;p->RChild = temp;}}第六章习题解析1.试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。

2.对题1所得各种形态的二叉树,分别写出前序、中序和后序遍历的序列。

3.已知一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,……,n k个度为k的结点,则该树中有多少个叶子结点?[提示]:参考P.116 性质3∵n=n0 + n1 + …… + n kB=n1 + 2n2 + 3n3+ …… + kn kn= B + 1∴n0 + n1 + …… + n k = n1 + 2n2 + 3n3+ …… + kn k + 1∴n0 = n2 + 2n3+ …… + (k-1)n k + 14.假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请画出该二叉树。

[提示]:参考P.1486.已知二叉树有50个叶子结点,则该二叉树的总结点数至少应有多少个?[提示]:[方法1](1)一个叶子结点,总结点数至多有多少个?结论:可压缩一度结点。

(2)满二叉树或完全二叉树具有最少的一度结点(3)可能的最大满二叉树是几层?有多少叶结点?如何增补?25<50<26可能的最大满二叉树是6层有25 = 32个叶结点假设将其中x个变为2度结点后,总叶结点数目为50则:2x + (32 – x) = 50得:x = 1811此时总结点数目= ( 26– 1) + 18×2[方法2]假设完全二叉树的最大非叶结点编号为m,则最大叶结点编号为2m+1,(2m+1)-m=50m=49总结点数目=2m+1=99[方法3]由性质3:n0=n2+1即:50=n2+1所以:n2=49令n1=0得:n= n0 + n2=997.给出满足下列条件的所有二叉树:a)前序和中序相同b)中序和后序相同c)前序和后序相同[提示]:去异存同。

相关文档
最新文档