树状结构算法介绍及其在生活中应用.docVIP

树状结构算法介绍及其在生活中应用.doc

  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文档。上传文档
查看更多
树状结构算法介绍及其在生活中应用

树状结构算法介绍及其在生活中应用   摘要:本文主要介绍了数据结构中的各种树状结构,重点介绍了二叉搜索树,其他还包括平衡二叉树,红黑树,霍夫曼树以及堆。此外,本文详细解释了二叉搜索树的操作的时间复杂度。同时,我们将介绍各种树形结构在生活中的应用。   关键词:算法;树状结构;应用   中图分类号:TP312 文献标识码:A 文章编号:1007-9416(2017)05-0147-02   在计算机世界中,有各种各样的抽象数据结构,包括数组,队列,堆栈,链表等。这些数据结构都可以转换到现实生活中的各种问题中去,以此能够高效的解决一些问题。在这些数据结构中,被使用的较为广泛的无疑是树状结构。本文就将详细介绍一下树状结构。   所谓树状结构,就是将信息存贮在节点之中,节点与节点之间用边链接起来的结构。一颗二叉树由结点的有限集合组成。这个集合可以由一个根节点和两个不相交的二叉树组成,这两颗二叉树分别成为这个根节点的左子树和右子树。关于树状结构其他种类更多的结构介绍,我们将在下文中一一阐述。   树状结构在现实生活中的使用也相当广泛。从计算机网络到数据库实现,树状结构无时无刻的在提高我们的工作效率。本文也会介绍其在生活中的应用,以引发读者对计算机科学的兴趣。   1 二叉检索树   我们首先介绍一下树状结构中最为简单也是最为常见的一种树:二叉检索树(Binary Search Tree)。   1.1 定义   首先我们介绍一下二叉检索树,明确一下它的定义。   所谓二叉检索树,就是满足一下条件的一棵二叉树:任意一个结点,设其值为K,则该节点的左子树中任意一个?Y点的值都小于K;该结点右子树种任意一个结点的值都大于或等于K。如图1所示。   同时,任意一个结点都有其深度,我们定义为根节点到该节点的路径长度。而BST的高度就是最深深度加1。   1.2 二叉检索树的搜索   对于一棵二叉检索树而言,其最重要的功能就是能够快速的找到某一个节点的值。假设我们从根节点开始,在BST中检索K值。如果根节点存储的值为K,则检索结束。如果不是K,则必须检索树的更深一层。BST检索的优势在于只需要检索两棵子树的其中之一。如果K小于根节点的值,则只需要检索左子树,反之则检索右子树。这个过程将会一直持续到K被找到,或者到一个叶节点(没有子树)为止。如果到了一个叶节点,依然没有发现K,则表示K不在该BST中。   搜索所消耗的时间取决于该结点被找到的深度。我们思考一下在一般的情况下,我们需要往下寻找直到一个最深叶节点才能够停下。那么这时候,我们的时间代价就是该BST的高度。对于有n个结点的二叉树,如果它是平衡的,那么他的高度就为logn。因此在平均情况下,我们搜索功能的时间复杂度为O(logn)。   1.3 二叉检索树的插入   这里我们先做一个简单的假设,我们要插入的节点的值K与BST中任意一个节点的值不重复。我们插入一个节点的时候,我们需要找出它必须放在树结构的什么地方。这就会把它带到一个叶节点(子树数量为0的节点)或者一个在待插入的方向上没有子节点的分支节点(子树数量为1的节点)。我们记录该节点为R,然后我们将包含值K的新节点作为R的子节点加上去,就完成了插入操作。   与搜索类似,插入操作的时间代价依赖于R的深度。因此,在平均情况下,插入操作的时间复杂度为O(logn)。   1.4 应用   二叉检索树在生活中应用相当广泛。首先,二叉检索树是其他平衡二叉树的基础,例如AVL树,红黑树等。此外,就其本身而言,也在日常生活中体现了自己的价值。其中最典型的就是路由器中的路由搜索引擎,查找一条指定的路由最坏情况下最多只需要查找31次。   虽然二叉检索树在树中的地位相当的高,但是其更大的用处在于衍生了很多的平衡二叉树,这些树在我们现实生活中大发光彩。下面我们也会介绍到,但在介绍的过程中,我们不再详细说明其各种操作的原理以及时间代价了。一方面其复杂程序不是本文可以说明清楚的,另一方面我也希望将文章的重点放在应用这一角度。   2 堆   2.1 定义   堆由两条性质来定义:首先,它是一棵完全二叉树。其次,堆中存储的数据是局部有序的,也就是说,节点存储的值与其子节点存储的值存在着某种关系。这种关系可以分成两类,这两类关系也决定了两种不同的堆。   最大堆:任意一个节点的值都大于或者等于任意一个子节点的值。根节点存储着该树中所有节点的最大值。   最小堆:任意一个节点的值都小于或者等于任意一个子节点的值。根节点存储了该树中所有节点的最小值。   这里我们需要弄清楚他和BST的区别。BST是定义了一组完全排序的节点,左边节点的值都比右边节点的值小。而堆仅仅实现了局部排序,当一个节点是另一个节点的子节点时,

文档评论(0)

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

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

1亿VIP精品文档

相关文档