计算机软件技术基础——4 树形结构.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机软件技术基础 教 师:曾晓东 电 话E_mail: zengxiaodong@263.net 非线性结构 逻辑特征:一个结点可能有多个直接前驱和直接后继。 类型:树型结构、图形结构。 第四章 树形结构 树型结构是一类很重要的非线性数据结构,在这类结构中,元素结点之间存在明显的分支和层次关系。 树型结构在客观世界中广泛应用,例如家族关系中的家谱、各种社会组织机构、一本书中的章节划分、操作系统中的多级目录结构、高级语言中源程序的语法结构等。 本章主要讨论树及二叉树的定义及其存储结构,重点讨论二叉树的特性以及应用。 第四章 树形结构 一、树的基本概念及存储结构 二、二叉树 三、二叉树的操作 四、树、森林与二叉树的关系 五、二叉排序树 六、哈夫曼树与哈夫曼算法 一、树的基本概念及存储结构 1、树的定义和术语 ? 树的定义 1)定义:树是由n(n≥0)个结点组成的有限集合T,其中有且仅有一个结点称为根结点(root),其余结点可以分为m(m≥0)个各互不相交的有限集合T1、T2、…、Tm,其中每一个集合Ti本身又是一棵树,称为根结点root的子树。当n=0时称为空树。 2)树是一种具有递归性质的结构。 3)树的根结点没有直接前驱,其余结点有且仅有一个直接前驱,所有结点可以有0个或多个直接后继。 一、树的基本概念及存储结构 ? 常用术语 1)结点:表示树中的元素。如A、B、K等 2)度:结点拥有的子树数。如A的度为3,C的度为1。一棵树中最大的结点度数为这棵树的度。上图中树的度为3。 3)叶子:度为0的结点,又称终端结点,如K、L、G等。 4)孩子:结点的子树的根,如B、C、D均是A的孩子。 5)双亲:相应地,该结点称为孩子的双亲,如A是B、C、D的双亲 一、树的基本概念及存储结构 6)子孙:以某结点为根的子树中的任一结点称为该结点的子孙。 7)祖先:从根到该结点所经分支上的所有结点。 8)兄弟:同一双亲的孩子。 9)结点的层次:从根结点开始算起,根为第一层,根的直接后继结点为第二层,以此类推。 10)高度(深度):树中结点的最大层次数。 一、树的基本概念及存储结构 11)森林:是m(m≥0)棵互不相交的树的集合 12)有序树:树中结点在同层中按从左到右有序排列、不能互换的称为有序树;反之称为无序树。 一、树的基本概念及存储结构 2、树的存储结构 1)树是多分支非线性表,因此需要采用多重链表结构,即每个结点设有多个指针域,其中每一个指针指向一棵子树的根结点。如图: 一、树的基本概念及存储结构 3)空链域问题:假设有一棵具有n个结点、度为k的树,采用同构型存储结构,那么有多少个空链域? 总链域=n*k; 考虑每个结点只有一个双亲,因此指向该结点的指针只有一个,但根结点无双亲,因此无指针指向它 非空链域=n-1; 所以,空链域=n(k-1)+1。 解决方法:转化为二叉树 一、树的基本概念及存储结构 双亲数组表示法 一棵有n个结点的树,用一维数组tree[n]来表示,在tree[1……n]中每个tree[i](1≤i≤n)是一个记录,它包含两个域:data和Parent域,其中,tree[i].data表示树的一个结点,tree[i].Parent存放该结点的双亲在tree[1……n]中的序号(下标),如果tree[i].data表示tree的root,则tree[i].Parent=0。如: 二、二叉树 1、二叉树的定义 1)二叉树是n(n≥0)个结点的有限集合,它或为空树(n=0),或由一个根结点和两棵分别称为左子树和右子树的互不相交的二叉树构成。这也是一个递归定义。 2)二叉树的五种不同形态 二、二叉树 2、二叉树的性质 1)二叉树的第i层上至多有2i-1(i≥1)个结点可用归纳法证明。 2)深度为h的二叉树中至多含有2h - 1个结点。由性质1求和即可证明。 3)在任意二叉树中,若有n0个叶子结点,n2个度为2的结点,则必有:n0=n2+1。 二、二叉树 证明:设n1为度为1的结点,则结点总数为 n=n0+n1+n2; 又分支总数为:b=n1+2n2; 而n=b+1; 所以n0=n2+1。 二、二叉树 定义1 满二叉树(Full Binary Tree) 一棵深度为k 且有2k-1个结点的二叉树。 二、二叉树 4) 具有n个结点的完全二叉树的深度为[log2 n]+1 证明:设完全二叉树的深度为h,则有 2h-1-1 n ? 2h-1 2h-1 ? n 2h 取对数 h–1 ? log2(n) h 二、二叉树 5) 对于—棵有n个结点的完全二叉树,对编号为i的结点

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档