第十二章 数据结构.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文档。上传文档
查看更多

完全二叉树还具有以下两个性质:(1)具有n个结点的完全二叉树的深度为[log2n]+1。其中,[log2n]的结果是不大于的最大整数。(2)对于有n个结点的完全二叉树中的所有结点按从上到下,从左到右的顺序进行编号,则对任意一个结点i(1≤i≤n),都有:①如果i=1,则结点i是这棵完全二叉树的根,没有双亲;否则其双亲结点的编号为[i/2]。②如果2i?n,则结点i没有左孩子;否则其左孩子结点的编号为2i。③如果2i+1?n,则结点i没有右孩子;否则其右孩子结点的编号为2i+1。第61页,共91页,星期日,2025年,2月5日BDAEHIJCFG完全二叉树(深度2)具有所有可能的结点BADECFG完全二叉树(深度3)BDAEHIC非完全二叉树(深度3)层次2遗漏结点BDAEHIKCFG非完全二叉树(深度3)层次3的结点不在最左边的位置HIDEBACHDBAEKICFG图12-20完全二叉树与非完全二叉树第62页,共91页,星期日,2025年,2月5日二叉树也可以采用两种存储方式:顺序存储结构和链式存储结构。1.二叉树的顺序存储结构这种存储结构适用于完全二叉树。其存储形式为:用一组连续的存储单元按照完全二叉树的每个结点编号的顺序存放结点内容。2.二叉树的链式存储结构在顺序存储结构中,利用编号表示元素的位置及元素之间孩子或双亲的关系,因此对于非完全二叉树,需要将空缺的位置用特定的符号填补,若空缺结点较多,势必造成空间利用率的下降。在这种情况下,就应该考虑使用链式存储结构。常见的二叉树结点结构如下所示:■12.6.4二叉树的存储结构LchilditemRchild第63页,共91页,星期日,2025年,2月5日二叉树是一种非线性的数据结构,在对它进行操作时,总是需要逐一对每个数据元素实施操作,这样就存在一个操作顺序问题,由此提出了二叉树的遍历操作。所谓遍历二叉树就是按某种顺序访问二叉树中的每个结点一次且仅一次的过程。这里的访问可以是输出、比较、更新、查看元素内容等等各种操作。二叉树的遍历方式分为两大类:一类按根、左子树和右子树三个部分进行访问;另一类按层次访问。在遍历二叉树的过程中,一般先遍历左树,再遍历右树。在先左后右的原则下,根据访问结点的顺序,二叉树的遍历可以分为三种:前序遍历、中序遍历、后序遍历。下面分别介绍这三种遍历的方法。■12.6.5二叉树的遍历第64页,共91页,星期日,2025年,2月5日第29页,共91页,星期日,2025年,2月5日反之,如图12-7所示,在线性表中删除元素b时,为在链表中实现元素a、b和c之间逻辑关系的变化,仅需修改结点a中的指针域即可。apbc图12-7链表的删除操作第30页,共91页,星期日,2025年,2月5日线性链表分为单链表、双向链表和循环链表三种类型。在单链表中,每一个结点只有一个指针域,因此,在这种线性链表中,只能沿指针向链尾方向进行扫描,这对于某些问题的处理会带来不便,因为在这种链接方式下,由某一个结点出发,只能找到它的后件,而为了找出它的前件,必须从头指针开始重新寻找。因此,在某些应用中,对于线性链表中的每个结点设置两个指针,一个称为左指针(Llink),指向其前件结点;另一个称为右指针(Rlink),指向其后件结点,这种链表称为双向链表。循环链表与单链表的区别仅仅在于其尾结点的链域值不是空,而是一个指向头结点的指针。循环链表的主要优点是:从表中任一结点出发都能通过后移操作而扫描整个循环链表。但对单链表来说,只有从头结点开始才能扫描表中全部结点。第31页,共91页,星期日,2025年,2月5日■12.5.1栈及其基本运算栈和队列是两种特殊的线性表,它们的逻辑结构和线性表相同,只是其运算规则较线性表有更多的限制,故又称运算受限的线性表。栈和队列被广泛应用于各种程序设计中。12.5栈和队列1.栈的基本概念栈(Stack)是限制仅在表的一端进行插入和删除运算的线性表。(1)通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。(2)当表中没有元素时称为空栈。(3)栈顶元素总是最后被插入的元素,栈底元素总是最先被插入的元素。(4)栈为后进先出(LastInFirstOut,简称为LIFO)或先进后出(FirstInLastOut,简称为FILO)的线性表。第32页,共91页,星期日,2025年,2月5日栈的修改是按后进先出的原则进行。每次删除(退栈)的总是当前栈中“最新”的元素,即最后插入(进栈

文档评论(0)

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

你好,我好,大家好!

版权声明书
用户编号:7140162041000002

1亿VIP精品文档

相关文档