树练习题(答案)(共4页)_第1页
树练习题(答案)(共4页)_第2页
树练习题(答案)(共4页)_第3页
树练习题(答案)(共4页)_第4页
树练习题(答案)(共4页)_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、树练习题一、单项选择题1、 在一棵度为3的树中,度为3的结点数为2个,度为2的结点数为1个,度为1的结点数为2个,则度为0的结点数为( )个。A. 4B. 5C. 6D. 72、 假设在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为( )个。A. 15B. 16C. 17D. 473、 假定一棵三叉树的结点数为50,则它的最小高度为( )。(根为第0层)A. 3 B. 4C. 5D. 64、 在一棵二叉树上第3层的结点数最多为( )(根为第0层)。A. 2B. 4 C. 6D. 85、 用顺序存储的方法将完全二叉树中的所有结点逐层存放在数组中R1.n,结点Ri若有左孩子

2、,其左孩子的编号为结点( )。(若存放在R0.n-1则左孩子R2i+1)A. R2i+1B. R2iC. Ri/2D. R2i-16、 将含100个结点的完全二叉树,按照从上层到下层、同层从左到右的次序依次给它们编以从0开始的连续自然数,则编号为40的结点X的双亲的编号为( )。A.19 B.20 C. 21 D.397、 由权值分别为3,8,6,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为( )。A. 24B. 48C. 72D. 538、 设n , m 为一棵二叉树上的两个结点,在中序遍历序列中n在m前的条件是( )。 A. n在m右方 B. n在m 左方 C. n是m的祖先 D.

3、 n是m的子孙9、 如果F是由有序树T转换而来的二叉树,那么T中结点的前序就是F中结点的( )。A. 中序B. 前序C. 后序D. 层次序10、 下面叙述正确的是( )。A. 二叉树不是树B. 二叉树等价于度为2的树C. 完全二叉树必为满二叉树D. 二叉树的左右子树有次序之分11、 任何一棵二叉树的叶子结点在先序、中序和后序遍历序列中的相对次序( )。A. 不发生改变 B. 发生改变C. 不能确定 D. 以上都不对12、 已知一棵完全二叉树的结点总数为9个,则最后一层的结点数为( )。A. 1 B. 2C. 3D. 413、 下列图示的顺序存储结构表示的二叉树是()。0123456789101

4、112ABCDEFA. B. C. D.14、 设二叉树的先序遍历序列和后序遍历序列正好相反,则该二叉树一定满足的条件是( )。A.空或只有一个结点 B.高度等于其结点数C.任一结点无左孩子 D.任一结点无右孩子15、 根据先序序列ABDEC和中序序列BDEAC确定对应的二叉树,该二叉树( )。A. 是完全二叉树但不是满二叉树 B. 不是完全二叉树C. 是满二叉树 D. 不能确定16、 对任何一棵二叉树T,设N0、N1、N2分别是度数为0、1、2的结点数,则下列判断正确的是( )。AN0N21BN1N01CN2N01DN2N11二、判断题1. 二叉树中每个结点的度不能超过2。 (1)2. 二叉

5、树的前序遍历中,任意结点均处在其子女结点之前。(1)3. 哈夫曼树的总结点个数(多于1时)不能为偶数。(1)4. 由二叉树的先序序列和后序序列可以唯一确定一颗二叉树。(0)5. 树的后序遍历与其对应的二叉树的中序遍历序列相同。(0)6. 根据任意一种遍历序列即可唯一确定对应的二叉树。(0)7. 满二叉树也是完全二叉树。(1)8. 哈夫曼树一定是完全二叉树。(0)9. 树的子树是无序的。(0)10.度小于等于2的有序树即为二叉树。 (0)三、填空题1、 由带权为3,9,6,2,5的5个叶子结点构成一棵哈夫曼树,则带权路径长度为_55_。2、 在一棵二叉排序树上按 中序 遍历得到的结点序列是一个有

6、序序列。3、 对于一棵具有n个结点的二叉树,当进行链接存储时,其二叉链表中的指针域的总数为 2n 个,其中 n-1 个用于链接孩子结点, n+1 个空闲着。4、 在一棵二叉树中,度为0的结点个数为n0,度为2的结点个数为n2,则n0= n2+1。5、 一棵深度为k的满二叉树的结点总数为 2k-1 ,一棵深度为k的完全二叉树的结点总数的最小值为 2k-1 ,最大值为 2k 。(根的深度为1)6、 由三个结点构成的二叉树,共有 5 种不同的形态。7、 设高度为h的二叉树中只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为 2h+1 。(根的高度为1)8、 对于一棵具有n个结点的二叉树,若

7、一个结点的编号为i(0in-1),则它的左孩子结点的编号为 2i+1 ,右孩子结点的编号为 2i+2 ,双亲结点的编号为 (i-1)/2 。9、 假设一棵二叉树的先序序列为ABCEDFG,中序序列为AECBFDG,则该二叉树的层序遍历序列中结点E的直接前驱是结点 F 。四、应用题1. 已知用一维数组存放的一棵完全二叉树:ABCDEFGHIJKL,写出该二叉树的先序、中序和后序遍历序列。先序:ABDHIEJKCFLG中序:HDIBJEKALFCG后序:HIDJKEBLFGCA2. 假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请写出该二叉树的后序遍历序列。后

8、序:ACDBGJKIHFE3若有字符a,b,c,d,e,f,g,h的频度权值分别为(30,5,9,11,15,2,7,16),试为这组字符设计哈弗曼编码。哈弗曼编码:a:01 b:00001 c:100 d:101 e:001 f:00000 g:0001 h:11五、算法设计题按照以下树的定义,完成数类中的以下成员函数的编写。(1)void PreOrder(Node* r); /先序遍历的递归算法 (2)void InOrder(Node* r); /中序遍历的递归算法 (3)void PostOrder(Node* r); /后序遍历的递归算法 (4)int High(Node* bt)

9、; /求二叉树高度的递归算法#include <iostream>#define MaxSize 100struct NodeNode *lChild;/左子树指针Node *rChild;/右子树指针DataType data; ;class BTree private: Node* root;public: BTree(); /构造函数 void PreOrder(Node* r); /先序遍历的递归算法 void InOrder(Node* r); /中序遍历的递归算法 void PostOrder(Node* r); /后序遍历的递归算法 int High(Node* bt

10、); /求二叉树高度的递归算法 int NodeNum(Node* bt); / 求二叉树结点数目 ;/二叉树先序遍历 递归算法 void BTree:PreOrder(Node* r) if(r!=NULL) cout<<r->data; PreOrder(r->lChild); PreOrder(r->rChild); /二叉树中序遍历 递归算法 void BTree:InOrder(Node* r,) if(r!=NULL) InOrder(r->lChildt); cout<<r->data; InOrder(r->rChild); /二叉树后序遍历 递归算法 void BTree:PostOrder(Node* r,) if(r!=NULL) PostOrder(r->lChild); PostOrder(r->rChild; cout<<r->data; /

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论