1第七讲树与二叉树.ppt

  1. 1、本文档共90页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1第七讲树与二叉树

数据结构(Java语言版) 项目设计 项目名称:家谱管理 项目简介 :家谱(或称族谱)是一种以表谱形式,记载一个以血缘关系为主体的家族世系繁衍和重要人物事迹的特殊图书体裁。 本项目对家谱管理进行简单的模拟,以实现查看祖先和子孙个人信息、插入家族成员、删除家族成员等功能。 思考:家族成员的数据结构?? 设计思路: 本项目的实质是完成对家谱成员信息的建立、查找、插入、修改、删除等功能,可以首先定义家族成员的数据结构,然后将每个功能写成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结果。 家谱的数据结构 分析:家族中的成员之间存在一个对多个的层次结构关系。 结论:家谱从形状上看像一颗倒长的树,所以用树结构来表示家谱比较适合。 树的基本术语 树的其它表示方法 7.2.4 树的存储结构 对于树,关心的是树在计算机中如何表示和存储。 存储树时,既要存储结点的数据元素,又要存储结点之间的逻辑关系。 结点之间的逻辑关系有:双亲-孩子关系、兄弟关系。因此,采用树的存储结构主要有双亲表示法、孩子表示法、双亲孩子表示法和孩子兄弟表示法。 表示结点之间的逻辑关系主要采用指针或仿真指针。 1.双亲表示法 使用指针表示每个结点的双亲结点,即双亲表示法。每个结点包含两个域:数据域和指针域。 图7.6(a)是对图7.2(b)采用常规指针表示的存储结构,图7.6(b)是对图7.2(a)采用仿真指针表示的存储结构。 2.孩子表示法 使用指针表示出每个结点的孩子结点,即孩子表示法。由于每个结点的孩子结点个数不同,为了简便起见,孩子表示法中的每个结点的指针域个数是树的度。 图7.7是对图7.2(b)采用常规指针表示的存储结构。 孩子表示法与双亲表示法的特点相反。孩子表示法可方便的找到一个结点的孩子及其后裔,并能方便的实现树的遍历。 3.双亲孩子表示法 采用双亲表示法和孩子表示法的优势,使用指针既表示出每个结点的双亲结点,又表示出每个结点的孩子结点,就是双亲孩子表示法。指针域既包括指向孩子的指针,也包括指向双亲结点的指针。图7.8是对图7.2(b)采用常规指针表示的存储结构,其中实线表示孩子指针,虚线表示双亲指针。 4.孩子兄弟表示法 采用指针既指向每个结点的孩子结点,又指向每个结点的兄弟结点,就是孩子兄弟表示法。指针域包含两个指针,指向孩子结点的指针和指向兄弟结点的指针。 图7.9是对图7.2(b)采用常规指针表示的存储结构,其中实线表示孩子指针,虚线表示兄弟指针。 第三节 7.3.1 二叉树的定义 定义:二叉树是由n(n≥0)个结点组成的有限集合、每个结点最多有两个子树的有序树。它或者是空集,或者是由一个根和称为左、右子树的两个不相交的二叉树组成。 特点: (1)二叉树是有序树,即使只有一个子树,也必须区分左、右子树; (2)二叉树的每个结点的度不能大于2,只能取0、1、2三者之一; (3)二叉树中所有结点的形态有5种:空结点、无左右子树的结点、只有左子树的结点、只有右子树的结点和具有左右子树的结点。如图7.10所示。 7.3.2 二叉树的性质 【学习任务】掌握二叉树的性质,注意二叉树、满二叉树、完全二叉树和扩充二叉树之间的联系。 二叉树性质 两种特殊形式的二叉树 顺序存储结构的实现: 按满二叉树的结点层次编号,依次存放二叉树中的数据元素 【例】二叉树结点数值采用顺序存储结构,如图所示。画出二叉树表示; public class BinTreeNode{ //二叉树结点类 private BinTreeNode lChild; //左孩子结点对象 private BinTreeNode rChild; //右孩子结点对象 public Object data; //数据元素 BinTreeNode(){ //构造二叉树结点 lChild=null; rChild=null; } BinTreeNode(Object item, BinTreeNode left, BinTreeNode right){ //构造二叉树结点

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档