《数据结构A》第05章——021.ppt

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

数据结构 第5章 树 5.1?? 树的基本概念 5.2?? 二叉树 5.3?? 二叉树的遍历 5.4?? 二叉树遍历的非递归算法 5.5?? 树和森林 5.6?? 堆和优先权队列 5.7?? 哈夫曼树和哈夫曼编码 5.8?? 并查集和等价关系 5.2 二叉树 5.2.1 二叉树的定义 5.2.2 二叉树的性质 5.2.3 二叉树ADT ADT BTree { 数据: 二叉树是结点的有限集合,它或者为空集合,或 者由一个根结点和两棵互不相交的左、右子二叉树组成。 运算: Create(); 构造一棵空二叉树。 Destroy():撤消一棵二叉树。 IsEmpty():若二叉树为空,则返回true,否则返回false。 Clear():移去所有结点,成为空二叉树。 5.2.4 二叉树的存储表示 完全二叉树的顺序表示 5.2.5 二叉树类 程序5.1 二叉树结点类 templateclass T struct BTNode { BTNode(){ lChild=rChild=NULL;} BTNode(const T x) { element=x; lChild=rChild=NULL; } 5.2.6 实现二叉树基本运算 程序5.3 部分二叉树运算 template class T bool BinaryTreeT::Root(T x)const { if(root){ x=root-element; return true; } else return false; } Data Structures in C++ 5.1?? 树的基本概念 5.2?? 二叉树 5.3?? 二叉树的遍历 5.4?? 二叉树遍历的非递归算法 5.5?? 树和森林 5.6?? 堆和优先权队列 5.7?? 哈夫曼树和哈夫曼编码 5.8?? 并查集和等价关系 定义5.3 二叉树是结点的有限集合,该集合或者为空集,或者是由一个根和两棵互不相交的,称为该根的左子树和右子树的二叉树组成。 二叉树的五种基本形态 二叉树与树的区别 二叉树可以为空二叉树 二叉树结点的子树分为左、右子树 性质5.1 二叉树的第i(i?1)层上至多有2i-1 个结点。 证明:当i=1时,二叉树只有一个结点,结论成立。 设当i=k时结论成立,则当i=k+1时,因为每个结点最多只有两个孩子,所以,第k+1层上至多有 2*2k-1 =2k 个结点,性质成立。 性质5.2 高度为h的二叉树上至多有2h –1个结点。 证明:当h=0时,二叉树为空二叉树。当h0时,利用性质5-1,高度为h的二叉树中结点的总数最多为: 性质5.3 包含n个元素的二叉树的高度至少为?log2 (n+1)? 证明:由性质2,高度为h的二叉树最多有2h –1个结点,因而n?2h –1, 则有h?log2(n+1)。因h是整数,所以h? ?log2 (n+1)?。 性质5.4 任意一棵二叉树中,若叶结点的个数为n0,度为2的结点的个数为n2,则必有n0=n2+1。 证明:设二叉树的结点总数为n,则 n=n0+n1+n2 孩子数为 n-1=n1+2n2, 因此, n0=n2+1 定义5.4 高度为h的二叉树恰好有2h –1个结点时称为满二叉树 。 定义5.5 一棵二叉树中,只有最下面两层结点的度可以小于2,并且最下一层的叶结点集中在靠左的若干位置上,这样的二叉树称为完全二叉树 。 定义5.6 扩充二叉树 也称2-树,扩充二叉树中除叶子结点外,其余结点都必须有两个孩子。 性质5.5 具有n个结点的完全二叉树的高度为?log2 (n+1)?。 证明:设完全二叉树的高度为h,则除最下层外,前h-1层形成满二叉树,总共有2h-1 ?1个结点;而最下层,即第h层的结点个数最多不超过2h-1个。因此有 2h-1?1n?2h?1 移项得 2h-1n+1?2h 取对数 h-1log2(n+1) ?h log2(n+1) ?hlog2(n+1)+1 所以, h = ?log2

文档评论(0)

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

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

1亿VIP精品文档

相关文档