第4章 算法与数据结构.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文档。上传文档
查看更多
队列的基本操作 队列的基本操作包括入队和出队。 入队表示在队列中增加元素,出队表示从队列中删除元素。 除此之外,基本操作还包括判断队列是否为空、返回队列的第一个元素、判断队列是否已满等。 4.8 树 4.8 树 在计算机科学领域,树(tree)是一种被广泛使用的数据结构,它由多个互相链接的节点形成的层次结构。 树结构类似于自然界中的树,但是是倒立的。 树有多种类型,人们最关心的是二叉树。 下面分别介绍树和二叉树的基本特点。 4.8.1 树的特点 树结构中有许多节点。每个节点既可以是一个值,也可以是包含了一组值,甚至可以是另外一个独立的数据结构。 在树结构中,根(root)是起始节点。 每个节点有零个或一个或多个子节点(child node)。 有子节点的节点称为子节点的父节点(parent node)。 一般地,在通常绘制的树结构图中,子节点总是位于父节点之下。 一个子节点最多只能有一个父节点。 没有子节点的节点就好象大自然中的树叶一样,被称为叶子节点(leaf node)。 树的主要运算 创建树; 列出树的所有数据元素; 列出树的部分数据元素; 在树中搜索指定的数据元素; 在树的指定位置增加数据元素; 在树中找到指定节点的父节点; 在树中找到指定节点的子节点; 删除指定的某个数据元素; 删除指定的子树; 增加一个数据元素; 增加一个子树; 计算树的高度。 4.8.2 二叉树的特点 虽然普通的树有许多应用,但是人们更关心的是二叉树(binary tree)。 这是因为大多数普通树都具有等价的二叉树表示,二叉树的结构和插入、删除、搜索等处理算法更容易用于程序设计语言实现。 简单地说,二叉树是指父节点最多有两个被称为左、右子节点的树。 二叉树的递归定义 下面给出二叉树的递归定义。二叉树T或者为空或者符合下面的描述: (1) T有一个特殊的节点,称为根节点; (2) T有两个节点集合,LT和RT,分别称为T的左子树和右子树; (3) LT和RT都是二叉树。 二叉树的递归 二叉树的运算 判断二叉树是否为空; 搜索二叉树中的某一个数据元素; 在二叉树中插入一个数据元素; 从二叉树中删除一个数据元素; 计算二叉树的高度; 计算二叉树的节点数量; 计算二叉树的叶节点数量; 遍历二叉树; 复制二叉树。 遍历二叉树 数据元素的插入、删除、搜索等操作均需要对二叉树进行遍历(traversal)。 遍历二叉树是指访问二叉树中的每一个节点。可以使用链表结构来存储二叉树。 有3种遍历二叉树的方法:中序遍历、前序遍历和后序遍历。 示例 4.9 图 4.9 图 图也是一种常见的数据结构,在许多领域例如电路、交通、物流、项目计划、社会科学等都有广泛的应用。 下面,主要介绍有关图的定义和特点、图的表示方法、图的主要操作等内容。 4.9.1 图的定义和特点 图(graph)是由一个顶点集V和一个边集E组成的数据结构,其中E是顶点连接对。 如果用G表示图,则G=(V, E)。其中,V={v1, v2, …, vm},E={e1, e2, …, en},e=(vi, vj)。如图4-26所示的示例都是图。 4.9.2 图的表示方法 如果希望编写程序对图进行处理和操作,则必须将图存储在计算机的内存中。在计算机科学领域,有多种存储图数据的方式。最常用的方法是邻接矩阵与邻接表。 首先介绍邻接矩阵方法。设G是一个有n(n0)个顶点的图,V(G)={v1, v2, …, vn},则邻接矩阵AG是一个n阶二维矩阵。在该矩阵中,如果vi至vj有一条边,则(i, j)项的值为1,否则为0,即: 邻接表方法 设G是一个有n(n0)个顶点的图,V(G)={v1, v2, …, vn}。在邻接表中,每个顶点v都对应着一个链表,该链表的每个节点都包含一个顶点u,且(v, u)∈E(G)。 因为图中有n个顶点,所以可以利用一个长度为n的数组A,A(i)指向第i个顶点对应的链表的第一个节点,链表由顶点vi的全部邻接顶点组成。 图的基本操作 创建图,采用某种方法将图存储在计算机中; 判断图是否为空; 找到某个顶点; 找到某个顶点的全部邻接顶点; 找到某个顶点的一个邻接顶点; 增加一条边; 删除一条边; 遍历图中所有路径; 遍历图中所有顶点; 计算关键路径; 输出图。 遍历算法 最常见的遍历算法是深度优先遍历(depth-first search,DFS)和广度优先遍历(breadth-first search,BFS)。 深度优先遍历算法的基本思想是:假设遍历过程中访问到顶点v,与顶点v邻接的顶点分别是w1、w2、…、wn。下一步访问的顶点是w1,其他顶点等待访问。顶点w1访问之后,再遍历所有与顶点w1相邻的顶点。直到与顶点w1相关的所有顶点访问结束之后,再依次访问

文档评论(0)

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

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

1亿VIP精品文档

相关文档