- 1、本文档共59页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chapt6树与二叉树3
数据结构与算法树与二叉树 在本章前面的内容中,我们首先讲解了树的定义,然后就过渡到对二叉树的讲解,包括二叉树的定义、存储结构、基本操作(遍历)等等问题。 其实,二叉树是树的特例,对于树,也会有存储和基本操作。 下面我们就来讲解树的相关问题,包括:树的存储结构、树的基本操作(遍历)、树与二叉树的转化 目录 树的存储结构 树、森林与二叉树的转化 树的遍历 应用举例:哈夫曼树 树的存储结构 双亲表示法 在树中,每个结点的双亲是唯一的,利用这个性质,可以在存储节点信息同时,为每个结点设置一个指向其双亲的指针,这样就能唯一的表示一棵树了。 数据结点表示:数据元素域,双亲结点指针域 物理存储方式:顺序表或者链表 (下面用顺序表为例,使用一组连续的存储单元来存放树中的结点) 注意:双亲表示法(以及后面讲的孩子表示法、双亲孩子表示法)是对树这种结构的一种逻辑表示法,对应于具体的物理存储方式可以使用顺序表也可以使用链表,要注意区分逻辑表示和物理存储的差别。 树的存储结构 双亲表示法 const MAX_TREE_SIZE = 100; typedef struct { // 结点结构 ElemType data; int parent; // 双亲位置域 } PTNode; typedef struct { // 树结构 PTNode nodes[MAX_TREE_SIZE]; int r, n; // 根的位置和结点数 } PTree; 树的存储结构 双亲表示法 好处:有利用于“向上”查找 (利用结点双亲的唯一性)。 不利:“向下”查找需遍历全部存储结点。 树的存储结构 孩子表示法 孩子表示法主要描述的是结点的孩子关系。 由于每个结点的孩子个数不定,所以在每个结点上设置多个指向孩子的指针域(称作多重孩子域)的方式是不合适的。这种方法不但不能确定要设置多少个指针域,而且会浪费空间。 如何表示孩子更好呢? 树的存储结构 孩子表示法 为树中所有结点建立一个线性表,用一个地址连续的存储空间来存储,数组中每个元素2个域,一个数据域(存放结点的数据),一个指针域(指向该结点的所有孩子组成的单链表的表头) 为每个结点的所有孩子结点都建立一个线性表,且以单链表作它的存储结构,单链表中每个元素2个域,一个数据域(存放该孩子在结点数组中的下标),一个指针域(指向下一个孩子结点)。 树的存储结构 孩子表示法 typedef struct CTNode { // 孩子结点 int child; struct CTNode *next;} *ChildPtr; typedef struct { ElemType data; // 结点的数据元素 ChildPtr firstchild; // 孩子链表头指针} CTBox; typedef struct { CTBox nodes[MAX_TREE_SIZE]; int n, r; // 结点数和根结点的位置} CTree; 树的存储结构 孩子表示法 优点:寻找某个结点的孩子比较容易 缺点:寻找双亲比较麻烦 树的存储结构 孩子双亲表示法 将双亲表示法和孩子表示法结合起来,即将一维数组元素增加一个表示双亲结点的域parent,用来指示结点的双亲在一维数组中的位置。 这样查找孩子和双亲就都很方便了。 树的存储结构 孩子兄弟表示法 树的存储结构还有一种方法:孩子兄弟表示法。下面我们简要介绍一下这种方法。这种方法将引出下一个问题:树与二叉树的转化问题。 孩子兄弟表示法也是一种链式存储结构。它通过描述每个结点的一个孩子和兄弟信息来反映结点之间的层次关系,其结点结构为: firstchild为指向该结点第一个孩子的指针 nextsibling为指向该结点的下一个兄弟 item是数据元素内容 树的存储结构 孩子兄弟表示法 typedef struct CSNode{ EntryType item; struct CSNode *firstchild,*nextsibling; }CSNode,*CSTree; 目录 树的存储结构 树、森林与二叉树的转化 树的遍历 应用举例:哈夫曼树 树、森林与二叉树的转化 在树或森林与二叉树之间有一一对应关系 任何一个树可以唯一的转化为一个二叉树 任何一个森林可以唯一的转化为一个二叉树 任何一个二叉树都可以唯一的转化为一个树或者森林 下面来看: 树转化为二叉树的方法 森林转
您可能关注的文档
- 2012年模拟考试数学试题54.doc
- 2012年江苏自考工程造价考试重点.doc
- 2012年武汉市1月调考试题.doc
- 2012年浙师大管理信息系统自理资料.doc
- 2012年浙江省第二次五校联考数学(理科)试题卷2012.4.doc
- 2012年烟台市初中学生学业考试-.doc
- 2012年申报表彰红旗小学团支部事迹介绍.doc
- 2012年生物中考真题分册汇编---七年级上2(人教版).doc
- 2012年秋九年级化学半期考试题.doc
- 2012年网络部招新策划书.doc
- 山东省威海市2023-2024学年高一年级下册期末考试语文试题及答案.pdf
- 2024-2025学年绥化市高二数学上学期开学考试卷(附答案解析).pdf
- 2024届贵州省贵阳某中学联考高考模拟预测地理试题(含答案解析).pdf
- 2024年公务员考试行测常识判断复习讲义.pdf
- 2024年广东学法考试试题附答案(考场一).pdf
- 2024年人教版八年级物理复习讲义:功 专项训练【五大题型】原卷版.pdf
- 江苏省泰州市高港区等2地2023-2024学年九年级上学期期中语文试题.pdf
- 酒店概论及酒店管理培训考试题库.pdf
- 湖北省旅游类《酒店服务》技能高考历年考试试题库(含答案).pdf
- 泰安市2025年中考一模考试物理试题(A)含解析.pdf
文档评论(0)