数据结构chapter6.pptVIP

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

数据结构 (DATA STRUCTURE);第六章 树与二叉树;6.1 树的定义与基本术语; 树形图 集合图;2) 基本术语;兄弟(sibling)结点:具有同一双亲的所有结点 祖先(ancestor)结点: 子孙(descendant)结点: 结点的层数(level):规定根结点层数为1,其余结点层数等于其双亲结点层数加1 树的高度/深度(depth):树中结点的最大层次 路径:若树中存在一个结点序列k1,k2…kj,使得ki是ki+1(1≤i≤j)的双亲,则称该序列是k1到kj的路径 森林:是m(m ? 0)棵互不相交的树的集合。;6.2 二叉树 (Binary Tree); 二叉树的五种基本形态;6.2.2 二叉树的性质;性质3 对任何一棵二叉树, 如果其叶结点个数为 n0, 度为2的非叶结点个数为 n2, 则有 n0=n2+1 证明:若设度为1 的结点有 n1 个,总结点个数 n 为度为 0 的结点加上度为 1 的结点再加上度为2 的结点: n = n0 + n1 + n2 另一方面,设总边数为 e,则根据二叉树的定义, e = 2n2 + n1 = n - 1 因此,有 2n2 + n1 = n0 + n1 + n2 - 1 n2 = n0 - 1 n0 = n2 + 1 ;定义1 满二叉树(Full Binary Tree) :一颗深度为k且有2k-1个结点的二叉树(每一层结点数都达到最大值)。 定义2 完全二叉树(Complete Binary Tree) 若设二叉树的高度为h,除第 h 层外,其它各层 (1 ? h-1) 的结点数都达到最大个数,第 h 层从右向左连续缺若干结点,这就是完全二叉树。 特点 叶子结点只可能在层次最大的两层上出现 对任一结点,若其右分支下子孙的最大层次为l,则其左分支下子孙的最大层次必为 l 或 l+1 ;1;性质4 具有 n 个结点的完全二叉树的高度为 ? log2n ? +1 证明:设完全二叉树的高度为h,则有 2h-1 - 1 n ? 2h - 1 2h-1 ? n 2h 取对数 h-1 ? log2 n h 因为h为整数 ,所以 h-1= ? log2n ? 即 h= ? log2n ? +1 ;性质5 如果将一棵有n 个结点的完全二叉树自顶向下,同一层自左向右连续给结点编号1, 2, …, n,然后按此结点编号将树中各结点顺序地存放于一个一维数组中, 并简称编号为 i 的结点为结点i (1 ? i ? n)。则有以下关系成立: 若i == 1, 则 i 无双亲,若i 1, 则 i 的双亲为?i /2? 若2*i = n, 则 i 的左子女为2*i;否则,I 无左子女,必定是叶结点, 二叉树中i ? n/2? 的结点必定是叶结点 若 2*i+1 = n, 则 i 的右子女为2*i+1,否则, i无右子女 若 i 为奇数且i不为1,则其左兄弟为i-1,否则无左兄弟; 若 i 为偶数且小于n,则其右兄弟为i+1,否则无右兄弟 i 所在层次为 ?log2 (i)? +1;1;6.2.3 二叉树的存储结构;优缺点:适合于存储完全二叉树。由于一般二叉树必须仿照完全二叉树那样存储,可能会浪费很多存储空间,单支树就是一个极端情况。;2)链式存储;二叉树的生成:按先序输入序列建立一棵二叉树 例:ABC##DE#G##F### BiTree CreateBiTree() { char ch; BiTree T; scanf(ch); if (ch==‘#’) T=NULL; else { if ((!t=(BiTNode *)malloc(sizeof(BiTNode)))) exit(overflow); T-data=ch; T-lchild=CreateBiTree( ); T-rchild=CreateBiTree(); return T; } };6.3 二叉树的遍历; 前序遍历:ABHFDECKG 中序遍历:HBDFAEKCG 后序遍历:HDFBKGCEA;前序遍历 (Preorder Traversal) 前序遍历二叉树算法的框架是 若二叉树为空,则空操作;

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档