“数据结构A》第05章.pptVIP

  1. 1、本文档共145页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
“数据结构A》第05章

数据结构 ;第5章 树;5.1?? 树的基本概念 5.2?? 二叉树 5.3?? 二叉树的遍历 5.5?? 树和森林 5.6?? 堆和优先权队列 5.7?? 哈夫曼树和哈夫曼编码 5.8?? 并查集和等价关系;5.1 树的基本概念; 树形结构是元素之间有着分层关系的结构,它类似于自然界中的树。这是一类很重要的非线性数据结构。 一方面,计算机应用中,常常出现嵌套的数据,树结构提供了对该类数据的自然表示。另一方面利用树结构,我们可以有效地解决一些算法问题。;图5-1 西欧语言谱系图;5.1.1 树的定义; 定义5.2 树是包括n个结点的有限非空集合T,其中,一个特定的结点r称为根,其余结点 T-{r}划分成m(m?0)个互不相交的子集T1,T2,?,Tm,其中,每个子集都是树,被称为树根r的子树。 ;5.1.2 基本术语;双亲(parent):若一个结点有子树,那么该结点称为子树根的双亲。;结点的度(degree):结点拥有的子树数。;A;有序树:如果树中结点的各棵子树看成是从左到右有次序的,则称该树为有序树。;森林:是树的集合。0个或多个不相交的树组成森林。 果园或有序森林:有序树的有序集合。;5.2 二叉树; 方法二:改进结构,组织成树形结构。比较次数不会超过树高,提高了效率。; 5.2.1 二叉树的定义 ; 二叉树的五种基本形态 ; 5.2.2 二叉树的性质 ;性质5.2 高度为h的二叉树上至多有2h –1个结点。;性质1、2的图形解释; 性质5.3 包含n个元素的二叉树的高度至少为?log2 (n+1)? ; 性质5.4 任意一棵二叉树中,若叶结点的个数为n0,度为2的结点的个数为n2,则必有n0=n2+1。 ;定义5.4 高度为h的二叉树恰好有2h –1个结点时称为满二叉树 。 定义5.5 一棵二叉树中,只有最下面两层结点的度可以小于2,并且最下一层的叶结点集中在靠左的若干位置上,这样的二叉树称为完全二叉树 。 定义5.6 扩充二叉树 也称2-树,扩充二叉树中除叶子结点外,其余结点都必须有两个孩子。 ;; 性质5.5 具有n个结点的完全二叉树的高度为?log2 (n+1)?。 ; 性质5.6 假定对一棵有n个结点的完全二叉树中的结点,按从上到下、从左到右的顺序,从0到n-1编号,设树中某个结点的序号为i,0?in ,则有以下关系成立: (1) 当i=0时,该结点为二叉树的根; (2) 若i0,则该结点的双亲的序号为 ?(i-1)/2?; (3)若2i+1n,则该结点的左孩子的序号为2i+1,否则该结点无左孩子; (4)若2i+2n,则该结点的右孩子的序号为2i+2,否则该结点无右孩子。 ;5.2.3 二叉树ADT; Root(x): 若二叉树非空,则x有根的值,并返回true,否则返回false。 MakeTree(x, left, right): 构造一棵二叉树:根的值为x,以left和right为左右子树。 BreakTree(x, left, right):拆分二叉树为三部分:x为根的值,left和right分别为原树的左、右子树 ; PreOrder(Visit):使用函数Visit访问结点, 先序遍历二叉树。 InOrder(Visit):使用函数Visit访问结点, 中序遍历二叉树。 PostOrder(Visit):使用函数Visit访问结点, 后序遍历二叉树。 }; 5.2.4 二叉树的存储表示 ;二叉树的链接表示(二叉链表) ;5.2.5 二叉树类; BTNode(const T x, BTNodeT* l, BTNodeT* r) { element=x; lChild=l; rChild=r; }; T element; BTNodeT* lChild, *rChild; }; ;程序5.2二叉树类 templateclass T class BinaryTree { public: BinaryTree(){root=NULL;} ~BinaryTree(){Clear();} bool IsEmpty()const; void Clear();; bool Root(T x)const; void MakeTree(const T e , BinaryTreeTleft,

文档评论(0)

shaoye348 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档