数据结构第6章树与森林

数据结构第6章树与森林

ID:33414474

大小:383.50 KB

页数:28页

时间:2019-02-25

数据结构第6章树与森林_第1页
数据结构第6章树与森林_第2页
数据结构第6章树与森林_第3页
数据结构第6章树与森林_第4页
数据结构第6章树与森林_第5页
资源描述:

《数据结构第6章树与森林》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6章树与森林一、复习要点本章主要介绍了树与森林、二叉树的定义、性质、操作和相关算法的实现。特别是二叉树的遍历算法,它们与许多以此为基础的递归算法都必须认真学习。因为树的先根遍历次序与对应二叉树表示的前序遍历次序一致,树的后根遍历次序与对应二叉树的中序遍历次序一致,因此可以据此得出树的遍历算法。线索化二叉树是直接利用二叉链表的空链指针记入前驱和后继线索,从而简化二叉树的遍历。堆是一种二叉树的应用,可以用它作为优先级队列的实现。它的存储表示是完全二叉树的顺序存储方式,它的定义不要求堆中的数据有序,但要求双亲结点与

2、子女结点必须满足某种关系。本章最后讨论霍夫曼树。这种树是扩充二叉树,要求在外结点上带有权值,在构造霍夫曼树时必须注意一个新结点的左子女上所带的权值小于右子女上所带的权值,这不是霍夫曼树必须这样,而是实现算法造成这种结果。此外,作为霍夫曼树的应用,引入霍夫曼编码。通常让霍夫曼树的左分支代表编码“0”,右分支代表编码“1”,得到霍夫曼编码。这是一种不等长编码,可以有效地实现数据压缩。本章复习的要点是:1、基本知识点要求理解树和森林的定义,树的抽象数据类型,二叉树的定义,二叉树的性质,二叉树的抽象数据类型,二叉树的数

3、组表示和链表存储表示。要求掌握二叉树的遍历,包括中序遍历、前序遍历、后序遍历方法,要求理解二叉树的计数方法及从二叉树遍历结果得到二叉树的方法。对于线索化二叉树,要求理解什么是线索,中序线索化二叉树的结构特性及寻找某结点的前驱和后继的方法。此外,需要理解堆的定义及其实现的方法,本章只考虑用完全二叉树的顺序存储来实现。还需要理解堆的建立,插入与删除过程。要求掌握树/森林与二叉树的转换,树的遍历方法。最后要求掌握霍夫曼树的实现方法及霍夫曼编码的概念。2、算法设计Ø建立二叉树的递归算法。Ø前序、中序、后序遍历二叉树的递

4、归算法。Ø使用栈的前序、中序、后序遍历的非递归算法。Ø统计二叉树结点个数,二叉树叶结点个数,二叉树高度的递归算法。Ø自左向右链接二叉树叶结点的递归算法。Ø判断两棵二叉树相等和交换二叉树左、右子女指针的递归算法。Ø通过二叉树的遍历建立前序线索化二叉树和中序线索化二叉树的算法。Ø中序线索化二叉树上的中序遍历算法。Ø前序线索化二叉树上的前序遍历算法。Ø后序线索化二叉树上的后序遍历算法。Ø利用堆实现优先级队列的操作。Ø堆的自上向下和自下向上的调整算法。Ø堆的插入与删除算法。Ø树的先根、后根、层次遍历算法(基于树的二叉树

5、表示)。二、难点与重点1、树:树的定义、树的基本运算Ø树的分层定义是递归的135Ø树中结点个数与高度的关系2、二叉树:二叉树定义、二叉树的基本运算Ø二叉树性质、二叉树中结点个数与高度的关系、不同种类的二叉树棵数Ø完全二叉树的顺序存储、完全二叉树的双亲、子女和兄弟的位置Ø二叉树的前序·中序·后序遍历的递归算法和使用栈的非递归算法Ø二叉树的层次遍历算法Ø中序线索化二叉树、前驱与后继的查找方法、建立中序线索化二叉树的算法3、霍夫曼树:霍夫曼树的构造方法、霍夫曼编码、带权路径长度的计算Ø霍夫曼树是带权路径长度最小的扩充

6、二叉树Ø构造霍夫曼树时,按构造算法,每次具最小关键码的子树是根的左子树,具次小关键码的子树是根的右子树Ø在构造过程中,新二叉树按根的权值加入到森林的最后4、树与森林Ø树的广义表表示、树的双亲表示、树的左子女-右兄弟表示Ø树、森林与二叉树的对应关系Ø树的先根·后根·层次遍历算法5、堆:堆的定义、堆的插入与删除算法Ø形成堆时用到的向下调整算法Ø形成堆时的调整过程及比较次数的上界估计Ø堆插入时用到的向上调整算法三、教材中习题的解析6-1写出用广义表表示法表示的树的类声明,并给出如下成员函数的实现:(1)operato

7、r>>()接收用广义表表示的树作为输入,建立广义表的存储表示;(2)复制构造函数用另一棵表示为广义表的树初始化一棵树;(3)operator==()测试用广义表表示的两棵树是否相等;(4)operator<<()用广义表的形式输出一棵树;(5)析构函数清除一棵用广义表表示的树。【解答】#include#definemaxSubTreeNum20;//最大子树(子表)个数classGenTree;//GenTree类的前视声明classGenTreeNode{//广义树结点类的声明frie

8、ndclassGenTree;private:intutype;//结点标志:=0,数据;=1,子女GenTreeNode*nextSibling;//utype=0,指向第一个子女;//utype=1或2,指向同一层下一兄弟union{//联合charRootData;//utype=0,根结点数据charChilddata;//utype=1,子女结点数据GenTreeNode*f

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。