[工作范文]数据结构第6章.ppt

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

数据结构;第6章 树和二叉树;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语;6.1 树的定义和基本术语; 6.2.1二叉树的定义与性质 二叉树(Binary Tree)是一种重要的树型结构。是度为2的有序树,它的特点是每个结点至多有两棵子树。和树的定义类似,二叉树的定义也可以用递归形式给出。 二叉树(BinaryTree)是n(n≥0)个结点的有限集。它或者是空集(n=0),或者同时满足以下两个条件: (1) 有且仅有一个根结点; (2) 其余的结点分成两棵互不相交的左子树和右子树。 ; 二叉树与树有区别:树至少应有一个结点,而二叉树可以为空;树的子树没有顺序,但如果二叉树的根结点只有一棵子树,必须明确区分它是左子树还是右子树,因为两者将构成不同形态的二叉树。因此,二叉树不是树的特例。它们是两种不同的数据结构。 二叉树有5种基本形态:;空二叉树 (b) 只有根结点的二叉树 (c) 右子树为空的二叉树 (d) 左子树为空的二叉树 (e) 左右子树均不为空的二叉树 ;两种特殊形态的二叉树:满二叉树和完全二叉树。 1、满二叉树(FullBinaryTree)? 深度为k,且有2k-1个结点的二叉树。 特点:(1)每一层上结点数都达到最大。 (2)度为1的结点n1=0,树叶都在最下一层上。 结点层序编号方法:从根结点起从上到下逐层(层内从左到右)对二叉树的结点进行连续编号。; 2、完全二叉树(Complete BinaryTree)? 深度为k,结点数为n的二叉树,当且仅当每个结点的编号都与相同深度的满二叉树中从1到n的结点一一对应??,称为完全二叉树。 完全二叉树的特点: (1)每个结点i的左子树的深度Lhi-其结点i的右子树的深度Rhi等于0或1,即叶结点只可能出现在层次最大或次最大的两层上。 (2)完全二叉树结点数n满足2k-1-1<n≤2k-1 (3)满二叉树一定是完全二叉树,反之不成立。;1;1;6.2.2 二叉树的性质 性质1 在二叉树的第i层上至多有2i-1 个结点(i≥1)。 性质2 深度为k的二叉树至多有2k-1个结点(k≥1)。 (深度一定,二叉树的最大结点数也确定) 性质3 二叉树中,终端结点数n0与度为2的结点数n2存在关系: n0=n2+1 性质4 结点数为n的完全二叉树,其深度为 ?log2n? + l ;性质5 在按层序编号的n个结点的完全二叉树中,任意一结点i(1≤i≤n)有: ⑴ i=1时,结点i是树的根;否则,结点i的双亲为结点 ? i/2 ? (i1) 。 ⑵ 2i>n时,结点i无左孩子,为叶结点;否则,结点i的左孩子为结点2i。 ⑶ 2i+1>n时,结点i无右孩子;否则,结点i的右孩子为结点2i+1。;; 完全二叉树; 这种存储结构适合于完全二叉树,既不浪费存储空间,又能很快确定结点的存放位置、结点的双亲和左右孩子的存放位置,但对一般二叉树,可能造成存储空间的大量浪费。; 例如:深度为k,且只有k个结点的右单枝树(每个非叶结点只有右孩子),需2k-1个单元,即有2k-1-k个单元被浪费。; 由于二叉树每个结点至多只有2个孩子,分别为左孩子和右孩子。因此可以把每个结点分成三个域:一个域存放结点本身的信息,另外两个是指针域,分别存放左、右孩子的地址。每个结点的结构表示为:;对应的结构类型定义如下: typedef struct node { ElemType data; struct node *lchild; struct node *rchild; } BTree,*tree; 其中,tree是指向根结点的指针。 ;二叉链表的结点结构;说明: ●一个二叉链表由根指针root唯一确定。若二叉树为空,则root=NULL;若结点的某个孩子不存在,则相应的指针为空。

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档