数据结构 C语言版 第二版 第5章 树和二叉树 答案

上传人:cn****1 文档编号:507883979 上传时间:2023-06-27 格式:DOCX 页数:10 大小:93.34KB
返回 下载 相关 举报
数据结构 C语言版 第二版 第5章 树和二叉树 答案_第1页
第1页 / 共10页
数据结构 C语言版 第二版 第5章 树和二叉树 答案_第2页
第2页 / 共10页
数据结构 C语言版 第二版 第5章 树和二叉树 答案_第3页
第3页 / 共10页
数据结构 C语言版 第二版 第5章 树和二叉树 答案_第4页
第4页 / 共10页
数据结构 C语言版 第二版 第5章 树和二叉树 答案_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《数据结构 C语言版 第二版 第5章 树和二叉树 答案》由会员分享,可在线阅读,更多相关《数据结构 C语言版 第二版 第5章 树和二叉树 答案(10页珍藏版)》请在金锄头文库上搜索。

1、第 5 章 树和二叉树1选择题(1)把一棵树转换为二叉树后,这棵二叉树的形态是( )。A. 唯一的B.有多种C.有多种,但根结点都没有左孩子D.有多种,但根结点都没有右孩子答案:A解释:因为二叉树有左孩子、右孩子之分,故一棵树转换为二叉树后,这棵二叉树的形态 是唯一的。(2)由3 个结点可以构造出多少种不同的二叉树?()A. 2B. 3C. 4D. 5答案: D解释:五种情况如下:AAAAABBBBBCCCC(3)一棵完全二叉树上有 1001 个结点,其中叶子结点的个数是( )。A. 250B. 500C. 254D. 501答案: D解释:设度为0结点(叶子结点)个数为A,度为1的结点个数为

2、B,度为2的结点个数 为C,有A=C+1,A+B+C=1001,可得2C+B=1000,由完全二叉树的性质可得B=0或1,又因为C 为整数,所以B=0,C=500,A=501,即有501个叶子结点。(4)一个具有1025个结点的二叉树的高h为()。A. 11B. 10C. 11 至1025之间D. 10至1024之间答案: C解释:若每层仅有一个结点,则树高h为1025;且其最小树高为Llog21025+ 1=11,即h 在 11 至 1025 之间。(5)深度为h的满m叉树的第k层有()个结点。(1二K二h)A. mk-1B. mk-1C. mh-1D. mh-1答案: A解释:深度为h的满

3、m叉树共有mh-1个结点,第k层有mk-i个结点。(6)利用二叉链表存储树,则根结点的右指针是( )。A.指向最左孩子B.指向最右孩子C.空D.非空答案: C解释:利用二叉链表存储树时,右指针指向兄弟结点,因为根节点没有兄弟结点,故根节 点的右指针指向空。(7)对二叉树的结点从 1 开始进行连续编号,要求每个结点的编号大于其左、右孩子的编 号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用( )遍历实现编号。A.先序B.中序C.后序D.从根开始按层次遍历答案: C解释:根据题意可知按照先左孩子、再右孩子、最后双亲结点的顺序遍历二叉树,即后序 遍历二叉树。(8)若二叉树采用二叉链

4、表存储结构,要交换其所有分支结点左、右子树的位置,利用( ) 遍历方法最合适。A.前序B.中序C.后序 D.按层次答案:C解释:后续遍历和层次遍历均可实现左右子树的交换,不过层次遍历的实现消耗比后续大, 后序遍历方法最合适。(9)在下列存储形式中,( )不是树的存储形式?A.双亲表示法 B.孩子链表表示法C.孩子兄弟表示法 D.顺序存储表示法答案: D 解释:树的存储结构有三种:双亲表示法、孩子表示法、孩子兄弟表示法,其中孩子兄弟 表示法是常用的表示法,任意一棵树都能通过孩子兄弟表示法转换为二叉树进行存储。(10)一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足 ( )

5、。A.所有的结点均无左孩子B.所有的结点均无右孩子C.只有一个叶子结点D 是任意一棵二叉树答案: C解释:因为先序遍历结果是“中左右”,后序遍历结果是“左右中”,当没有左子树时,就 是“中右”和“右中”;当没有右子树时,就是“中左”和“左中”。则所有的结点均无左孩子或 所有的结点均无右孩子均可,所以A、B不能选,又所有的结点均无左孩子与所有的结点均无右 孩子时,均只有一个叶子结点,故选 C。(11) 设哈夫曼树中有199个结点,则该哈夫曼树中有()个叶子结点。A. 99B. 100C. 101D. 102答案: B解释:在哈夫曼树中没有度为 1的结点,只有度为0(叶子结点)和度为 2的结点。设

6、叶 子结点的个数为nO,度为2的结点的个数为n2,由二叉树的性质n0=n2+l,则总结点数n= nO+n2=2*nOT,得到 n0=100。(12)若X是二叉中序线索树中一个有左孩子的结点,且X不为根,则X的前驱为()。A. X的双亲B. X的右子树中最左的结点C. X的左子树中最右结点D. X的左子树中最右叶结点答案: C(13)引入二叉线索树的目的是( )。A.加快查找结点的前驱或后继的速度B.为了能在二叉树中方便的进行插入与删除C.为了能方便的找到双亲D 使二叉树的遍历结果唯一答案: A(14)设F是一个森林,B是由F变换得的二叉树。若F中有n个非终端结点,则B中右指 针域为空的结点有(

7、 )个。A. n 1B. nC. n + 1D. n + 2答案: C(15)n (n22)个权值均不相同的字符构成哈夫曼树,关于该树的叙述中,错误的是()。A. 该树一定是一棵完全二叉树B. 树中一定没有度为1的结点C. 树中两个权值最小的结点一定是兄弟结点D. 树中任一非叶结点的权值一定不小于下一层任一结点的权值答案:A解释:哈夫曼树的构造过程是每次都选取权值最小的树作为左右子树构造一棵新的二叉树, 所以树中一定没有度为 1的结点、两个权值最小的结点一定是兄弟结点、任一非叶结点的权值一 定不小于下一层任一结点的权值。2应用题(1)试找出满足下列条件的二叉树 先序序列与后序序列相同中序序列与

8、后序序列相同 先序序列与中序序列相同中序序列与层次遍历序列相同答案:先序遍历二叉树的顺序是“根左子树右子树”,中序遍历“左子树根右子树”,后序遍历顺序是:“左子树一右子树一根,根据以上原则有 或为空树,或为只有根结点的二叉树 或为空树,或为任一结点至多只有左子树的二叉树 或为空树,或为任一结点至多只有右子树的二叉树 或为空树,或为任一结点至多只有右子树的二叉树2)设一棵二叉树的先序序列: A B D F C E G H ,中序序列: B F D A G E H C 画出这棵二叉树。 画出这棵二叉树的后序线索树。 将这棵二叉树转换成对应的树(或森林)。答案:(3) 假设用于通信的电文仅由8个字母

9、组成,字母在电文中出现的频率分别为 0.07, 0.19 0.02, 0.06, 0.32, 0.03, 0.21, 0.10。 试为这 8 个字母设计赫夫曼编码。 试设计另一种由二进制表示的等长编码方案。19, 21, 32 对于上述实例,比较两种方案的优缺点。 答案:方案 1;哈夫曼编码 先将概率放大 100 倍,以方便构造哈夫曼树。 w=7,19,2,6,32,3,21,10 ,按哈夫曼规则: 【 ( 2,3 ), 6, (7,10)】,(100),.(4)1921 32(28)(11),(5)710 623字母编号对应编码出现频率111000.072000.193111100.0241

10、1100.065100.326111110.037010.218lchild=NULL&T-rchild=NULL)return 1; /判断结点是否是叶子结点(左孩子右孩子都为空),若是则返回 1 elsereturn LeafNodeCount(T-lchild)+LeafNodeCount(T-rchild);(2) 判别两棵树是否相等。题目分析先判断当前节点是否相等(需要处理为空、是否都为空、是否相等),如果当前节 点不相等,直接返回两棵树不相等;如果当前节点相等,那么就递归的判断他们的左右孩子 是否相等。算法描述int compareTree(TreeNode* tree1, Tre

11、eNode* tree2) /用分治的方法做,比较当前根,然后比较左子树和右子树 bool tree1IsNull = (tree1=NULL);bool tree2IsNull = (tree2=NULL);if(tree1IsNull != tree2IsNull)return 1;if(tree1IsNull & tree2IsNull)/如果两个都是NULL,贝I相等return 0;/如果根节点不相等,直接返回不相等,否贝的话,看看他们孩子相等不相等 if(tree1-c != tree2-c)return 1;return (compareTree(tree1-left,tree2-left)&compareTree(tree1-right,tree2-right) (compareTree(tree1-left,tree2-right)&compareTree(tree1-right,tree2-left);/算法结束(3) 交换二叉树每个结点的左孩子和右孩子。 题目分析如果某结点左右子树为空,返回,否贝交换该结点左右孩子,然后递归交换左右子树。算法描述void ChangeLR(BiTree &T)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号