二叉树的遍历操作.doc

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

二叉树的遍历操作 摘要:二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,掌握二叉树的遍历对于二叉树的学习有重要作用。 关键词:二叉树;遍历 Binary Tree Traversal Abstract: The binary tree is an important type of tree structure. Many practical problems in abstract data structures are often in the form of a binary tree, general tree can be simply converted to a binary tree and binary tree storage structure and its algorithms are relatively simple, master binary tree traversal important role for the binary tree learning . Key Words:Binary Tree;Traversal 0引言 先序遍历中序遍历后序遍历还原二叉树引言二叉树是数据结构非常重要的一种非线性结构,是树型结构的一种特殊形式,在计算机处理领域有着广泛的应用。 1 概述 1.1 二叉树遍历的背景与意义 现实世界中很多问题都可归纳为树的模型,在树这种数据结构中,所有数据元素之间的关系具有明显的层次特性。其中以树和二叉树最为常用,它可以很好地描述客观世界中广泛存在的具有分支关系或层次特性的对象,因此在计算机领域有着广泛应用,如操作系统中的文件件管理、编译程序中的语法结构和数据库系统信息组织形式等。 二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树对学习程序设计、利用计算机解决实际问题特别重要。二叉树的各种复杂运算大都是建立在其三种遍历之上,因此掌握好二叉树的遍历算法是很有必要的。 1.2树 树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。树结构在客观世界中广泛存在,如人类社会的族谱和各种社会组织机构都可用树形象表示。树在计算机领域中也得到广泛应用,如在编译源程序时,可用树表示源程序的语法结构。又如在数据库系统中,树型结构也是信息的重要组织形式之一。一切具有层次关系的问题都可用树来描述 。 树结构的特点是:它的每一个结点都可以有不止一个直接后继,除根结点外的所有结点都有且只有一个直接前驱。以下具体地给出树的定义及树的数据结构表示。 。二叉树是非线性结构,即每个数据结点至多只有一个前驱,但可以有多个后继。它可采用顺序存储结构和链式存储结构。 二叉树的顺序存储,就是用一组连续的存储单元存放二叉树中的结点。因此,必须把二叉树的所有结点安排成为一个恰当的序列,结点在这个序列中的相互位置能反映出结点之间的逻辑关系,用编号的方法从树根起,自上层至下层,每层自左至右地给所有结点编号,缺点是有可能对存储空间造成极大的浪费,在最坏的情况下,一个深度为k且只有k个结点的右单支树需要2k-1个结点存储空间。依据二叉树的性质,完全二叉树和满二叉树采用顺序存储比较合适,树中结点的序号可以唯一地反映出结点之间的逻辑关系,这样既能够最大可能地节省存储空间,又可以利用数组元素的下标值确定结点在二叉树中的位置,以及结点之间的关系 。图(a)是一棵完全二叉树,图(b)给出的图(a)所示的完全二叉树的顺序存储结构。 完全二叉树的顺序存储示意图 对于一般的二叉树,如果仍按从上至下和从左到右的顺序将树中的结点顺序存储在一维数组中,则数组元素下标之间的关系不能够反映二叉树中结点之间的逻辑关系,只有增添一些并不存在的空结点,使之成为一棵完全二叉树的形式,然后再用一维数组顺序存储。如图给出了一棵一般二叉树改造后的完全二叉树形态和其顺序存储状态示意图。显然,这种存储对于需增加许多空结点才能将一棵二叉树改造成为一棵完全二叉树的存储时,会造成空间的大量浪费,不宜用顺序存储结构。最坏的情况是右单支树,如图所示,一棵深度为k的右单支树,只有k个结点,却需分配2k-1个存储单元。 图一般二叉树及其顺序存储示意(a) 一棵右单支二叉树 (b) 改造后的右单支树对应的完全二叉树 (c) 单支树改造后完全二叉树的顺序存储状态 图右单支二叉树及其顺序存储示意图 二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系

文档评论(0)

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

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

1亿VIP精品文档

相关文档