- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构——Java语言描述(下)ppt188
数据结构——Java语言描述(下) 第七章 树和二叉树第八章 图第九章 排序第十章 查找第十一章 哈希表 第7章 树和二叉树 7.1 树 7.2 二叉树 7.3 以结点类为基础的二叉树设计 7.4 二叉树类 7.5 二叉树的分步遍历 7.6 线索二叉树 7.7 霍夫曼树 7.8 树的遍历 本章主要知识点: 树的定义、表示方法和存储结构 二叉树的定义、性质和存储结构,满二叉树和完全二叉树的概念 二叉树的前序、中序、后序和层序遍历算法 二叉树中序和层序游标类的设计方法 线索二叉树的基本概念 哈夫曼树和哈夫曼编码,哈夫曼编码的软件设计方法 树与二叉树的转换,树的遍历 7.1 树 7.1.1 树的定义 树是由n(n≥0)个结点构成的满足以下条件的结点集合: (1)当n0时,有一个特殊的结点称为根结点,根结点没有前驱结点; (2)当n1时,除根结点外的其他结点被分成m(m0)个互不相交的集合T1, T2,…, Tm,其中每一个集合Ti(1≤i≤m)本身又是一棵结构和树结构类同的子树。 树的示例: 结点:结点由数据元素和构造数据元素之间关系的指针 组成。 结点的度:结点所拥有的子树的个数称为该结点的度。 叶结点:度为0的结点称为叶结点,叶结点也称作终端结点。 分支结点:度不为0的结点称为分支结点,分支结点也称 作非终端结点。 孩子结点:树中一个结点的子树的根结点称作这个结点 的孩子结点。 双亲结点:若树中某结点有孩子结点,则这个结点就称作它的孩子结点的双亲结点。 兄弟结点:具有相同的双亲结点的结点称为兄弟结点。 树的度:树中所有结点的度的最大值称为该树的度。 结点的层次:从根结点到树中某结点所经路径上的分支数。 树的深度:树中所有结点的层次的最大值称为该树的深度。 无序树:树中任意一个结点的各孩子结点的排列没有严格次序的树称为无序树。 有序树:树中任意一个结点的各孩子结点的排列有严格次序的树称为有序树。 森林:m(m≥0)棵树的集合称为森林。 7.1.2 树的表示方法 1 直观表示法 2 形式化表示法 树的形式化表示法主要用于树的理论描述。树的形式化表示法定义树T为T=(D,R)其中D为树T中结点的集合,R为树T中结点之间关系的集合。当树T为空树时D=¢;当树T不为空树时有D={Root}∪DF,其中Root为树T的根结点,DF为树T的根Root的子树集合,DF可由下式表示: DF = D1∪D2∪…∪Dm (1≤i,j≤m, Di∩Dj=¢) 3 凹入表示法 直观表示法B图的凹入表示: 7.13 树的抽象数据类型 数据集合 :树的结点集合,每个结点由数据元素和构造数据元素之间关系的指针组成。 操作集合: (1)双亲结点parent() (2)左孩子结点leftChild() (3)右兄弟结点rightSibling() (4)遍历树traverse(vs) 7.1.4 树的存储结构 1 双亲表示法 双亲表示法就是用指针表示出每个结点的双亲结点。 对于使用仿真指针的双亲表示法来说,每个结点应有两个域,一个是数据元素域,另一个是指示其双亲结点在数组中下标序号的仿真指针域。 树及其使用仿真指针的双亲表示法 2 孩子表示法 孩子表示法就是用指针表示出每个结点的孩子结点。 常规指针的孩子表示法 3 双亲孩子表示法 双亲孩子表示法就是用指针既表示出每个结点的双亲结点,也表示出每个结点的孩子结点。 4 孩子兄弟表示法 孩子兄弟表示法就是用指针既表示出每个结点的孩子结点,也表示出每个结点的兄弟结点。 7.2 二叉树 7.2.1 二叉树的定义 二叉树是n(n≥0)个结点构成的、每个结点最多只有两个子树的有序树。 满二叉树:在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子结点都在同一层上。 完全二叉树:如果一棵具有n个结点的二叉树的逻辑结构与满二叉树的前n个结点的逻辑结构相同。 两棵不同的二叉树 满二叉树和完全二叉树 7.2.2 二叉树抽象数据类型 数据集合:二叉树的结点集合,每个结点由数据元素和构造数据元素之间关系的指针组成。 操作集合: (1)双亲结点parent(): (2)左孩子结点leftChild() (3)右孩子结点rightSibling() (4)左插入结点insertLeftNode
原创力文档


文档评论(0)