- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
中学课件数据结构treeandbinarytree
第六章 树和二叉树 6.1 树的定义和基本术语 6.2 二叉树 6.3 遍历二叉树和线索二叉树 6.4 树和森林 6.5 哈夫曼树及其应用 6.1 树的定义和基本术语 树型结构是一类重要的非线性结构。树型结构是结点之间有分支,并且具有层次关系的结构,它非常类似于自然界中的树。 一、常用术语 续 一棵树是一个二元组:Tree=(root, F),其中: F=( T1,T2,T3…Tm ), Ti=(ri,Fi),i =1,2,…,m 6.2 二叉树 一、二叉树的定义 二叉树(Binary Tree):是一种树型结构,特点:每个结点至多只有两棵子树(不存在度大于2的结点),并且二叉树的子树有左右之分,次序不能任意颠倒。抽象数据类型二叉树定义见教材P121~123。 二、二叉树的性质 性质1:在二叉树的第i层上至多有2i-1个结点(i=1) 采用归纳法证明: 1)当i=1时,只有一个根结点,2i-1=20 =1,命题成立。 2)假定对所有的j,1=ji,命题成立,即第j层上至多有2j-1个结点,由归纳假设可知,当j=i-1时,即第i-1层上至多有2i-2个结点。 3)由于二叉树每个结点的度最大为2,故在第i层上最大结点数为第i-1层上最大结点数的二倍,即: 2×2i-2=2i-1。命题得证 二、二叉树的性质 性质2:深度为k的二叉树至多有2k-1个结点(k=1) 深度为k的二叉树的最大的结点时为二叉树中每层上的最大结点数之和,由性质1得到每层上的最大结点数为2i-1,(1≤i≤k),则最多的结点数为: 二、二叉树的性质 性质3:对任何一棵二叉树T,如果叶子结点数为n0,度为2的结点数为n2,则n0=n2+1。 二、二叉树的性质 下面介绍两种特殊形态的二叉树 1. 满二叉树 一棵深度为k且由2k-1个结点的二叉树称为满二叉树。 二、二叉树的性质 2. 完全二叉树 如果深度为k、有n个结点的二叉树中各结点能够与深度为k的顺序编号的满二叉树从1到n标号的结点相对应,则称该树为完全二叉树。 二、二叉树的性质 完全二叉树的特点是: (1)所有的叶结点都出现在第k层或k-1层 (2)对任一结点,如果其右子树的最大层次为L,则其左子树的最大层次为L或L+1 二、二叉树的性质 性质4:具有n个结点的完全二叉树的深度为 [log2n]+1 二、二叉树的性质 二、二叉树的性质 性质5: 如果对一棵有n个结点的完全二叉树的结点按层次编号(从第1层到第[log2n]+1层,每层从左到右),则对任一结点i(1=i=n),有: (1)如果i=1,则结点i无双亲,是二叉树的根;如果i1,则其双亲是结点[i/2]。 (2)如果2in,则结点i为叶子结点,无左孩子;否则,其左孩子是结点2i。 (3)如果2i+1n,则结点i无右孩子;否则,其右孩子是结点2i+1。 三、二叉树的存储结构 1. 顺序存储结构 按完全二叉树结点层次编号,依次存放 三、二叉树的存储结构 2. 链式存储结构 存储二叉树经常使用二叉链表 6.3 遍历二叉树和线索二叉树 遍历二叉树(Travering binary tree):指按一定的次序系统地访问二叉树中的所有结点且仅访问一次。 L,D,R 1. DLR 先序(DLR)的操作定义为: 若二叉树为空,则空操作;否则 (1)访问根结点; (2)先序遍历左子树; (3)先序遍历右子树。 先序遍历算法 Status PreorderTraverse(BiTree T){ if(T){ printf(“%c”,T–data); if(PreorderTraverse(T-lchild)) if(PreorderTraverse(T-rchild)) return OK; return ERROR; } else return OK;} 2. LDR 中序LDR遍历操作定义如下: 若二叉树为空,则空操作;否则 (1)中序遍历左子树; (2)访问根结点; (3)中序遍历右子树。 中序遍历算法 Status InorderTraverse(BiTree T){ if(T) { InorderTraverse(T-lchild); printf(“%c”,T-data); InorderTraverse(T-rchild); } return OK; } 续 中序遍历递归算法执行过程中递归工作栈的状态: 1)工作栈中包含两项:其一是递归调用的
您可能关注的文档
最近下载
- 2024-2025年数学选择性必修第一册共线向量与共面向量同步检测 2(带答案).docx VIP
- 数据治理概论课件:数据治理工具.pptx VIP
- 08J907 洁净厂房建筑构造.pdf VIP
- 04G323-2 图集钢筋混凝土吊车梁(工作级别A4、A5).pdf VIP
- 全国优质课一等奖统编版语文八年级上册唐诗五首《野望》《黄鹤楼》《使至塞上》《渡荆门送别》《钱塘湖春行》公开课课件.pptx
- 幼儿高热惊厥的急救处理.pptx VIP
- 惯性器件原理课件.pptx VIP
- 新版建设工程工程量清单计价标准解读.pptx VIP
- 危大工程专项施工方案.doc VIP
- 莫桑比克考察报告.pdf VIP
文档评论(0)