第6章 树和二叉树(2)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
云南大学信息学院计算机科学与工程系《数据结构》课后作业
第2套第6章树和二叉树
一、选择题
1. 有n个叶子的哈夫曼树的结点总数为()。
A.不确定 B.2n C.2n+1 D.2n-1
2.在下列存储形式中,哪一个不是树的存储形式?()
A.双亲表示法 B.孩子链表表示法 C.孩子兄弟表示法 D.顺序存储表示法
3.将一棵树t 转换为孩子—兄弟链表表示的二叉树h,则t的后根序遍历是h 的A.前序遍历 B.中序遍历 C.后序遍历()
4.n个结点的线索二叉树上含有的线索数为()
A.2n B.n-l C.n+l D.n
5.()的遍历仍需要栈的支持.
A.前序线索树 B.中序线索树 C.后序线索树
6. 设F是一个森林,B是由F变换得的二叉树。若F中有n个非终端结点,则B中右指针域为空的结点有()个。
A. n-1 B.n C. n+1 D. n+2
7.下面几个符号串编码集合中,不是前缀编码的是()。
A.{0,10,110,1111} B.{11,10,001,101,0001}
C.{00,010,0110,1000} D.{b,c,aa,ac,aba,abb,abc}
二、判断题
1.任何一棵二叉树都可以不用栈实现前序线索树的前序遍历。
2. 用链表(llink-rlink)存储包含n个结点的二叉树,结点的2n个指针区域中有n-1个空指针。
3. 在中序线索二叉树中,每一非空的线索均指向其祖先结点。
4.霍夫曼树的结点个数不能是偶数。
5.哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近。
三、填空题
1.树在计算机内的表示方式有_(1)__,_(2)__,_(3)__。
2.每一棵树都能唯一的转换为它所对应的二叉树。若已知一棵二叉树的前序序列是BEFCGDH,对称序列是FEBGCHD,则它的后序序列是_(1)__。设上述二叉树是由某棵树转换而成,则该树的先根次序序列是_(2)__。
3.线索二元树的左线索指向其______,右线索指向其______。
4.若以{4,5,6,7,8}作为叶子结点的权值构造哈夫曼树,则其带权路径长度是______。
5.将二叉树bt中每一个结点的左右子树互换的C语言算法如下,其中ADDQ(Q,bt),DELQ(Q),EMPTY(Q)分别为进队,出队和判别队列是否为空的函数,请填写算法中得空白处,完成其功能。
typedef struct node
{int data ; struct node *lchild, *rchild; }btnode;
void EXCHANGE(btnode *bt)
{btnode *p, *q;
if (bt){ADDQ(Q,bt);
while(!EMPTY(Q))
{p=DELQ(Q); q=(1)___; p->rchild=(2)___; (3)___=q;
if(p->lchild) (4)___; if(p->rchild) (5)___;
}
} }//
四、应用题
1.从概念上讲,树,森林和二叉树是三种不同的数据结构,将树,森林转化为二叉树的基本目的是什么,并指出树和二叉树的主要区别。
2.一棵二叉树的先序、中序、后序序列如下,其中一部分未标出,请构造出该二叉树。先序序列:_ _ C D E _ G H I _ K
中序序列:C B _ _ F A _ J K I G
后序序列:_ E F D B _ J I H _ A
3.在二叉树的Llink-Rlink存储表示中,引入“线索”的好处是什么?
4.设有正文AADBAACACCDACACAAD,字符集为A,B,C,D,设计一套二进制编码,使得上述正文的编码最短。
五、算法设计题
1.编程求以孩子—兄弟表示法存储的森林的叶子结点数。要求描述结构。
2.假设以双亲表示法作树的存储结构,写出双亲表示的类型说明,并编写求给定的树的深度的算法。(注:已知树中结点数)