二叉树数据结构
Posted 斜杠时光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树数据结构相关的知识,希望对你有一定的参考价值。
昨天介绍的线性表是数据结构中很常见的一种数据表现方式,那么今天介绍的二叉树则是另外一种很常见并且应用广泛的数据结构。
在计算机科学中,像线性表或二叉树都是抽象的概念,并且是为了解决现实问题的通用工具。世界上有什么样的问题,就有什么样的工具,或者说工具的发明是针对问题来的。
比如在数学上要计算数字,人类就是发明了算盘,在物理学上,要测量绝对的数值,人类就发明了各种度量长度的尺寸、计时的钟、称重量的天平和秤等等。那么在计算机中,由于经常要做的事情就是判断真假、比较大小、排序、挑选最大值之类的操作,这些在计算机的世界里又如此重要,为了解决这些问题,计算机科学家们专门设计一种数据结构,这种数据结构就是「二叉树」。
下面可以看一张图,可以有一个主观的认知:
从这张图可以看到,我们可以将它与自然界的树木联系起来。简单来说可以是把自然界的树木倒过来。
他们都有一个根,二叉树的根就是图中顶上红色的那个点,然后从根开始,它们都有分叉,只不过二叉树为了简单起见,只能有两个分叉,不能更多,这一点和自然界的树不同。
每一个分叉也有一个自己的根节点,就是图中蓝色的那些点,你可以把它们想象成大树各级主干分支前的部分。最后一棵树的树杈还能再分叉,二叉树也是如此,任何一个树杈都可以再分出两叉,这个过程可以无限持续下去。
映射到我们具体生活中,好比一个公司大老板是根节点,CEO下面的几个副总是这个老板中主干的根,副总下面的几个高级总监是副总枝干的节点,然后再是高级经理是总监的子节点,最后是到基层员工则是叶子节点。
二叉树这种数据结构应用很广泛,比如要抓取一个网站所有的网页,那么就是用到二叉树的深度遍历优先算法,还有可以做二叉树排序,可以快速把待排序内容进行排序。还有在Linux系统中的文件系统也是根据二叉树算法进行设计的,在Linux中有个root文件,user文件或system文件都是它的子节点。
二叉树数据结构虽然是一种抽象的东西,在自然界里并不存在,但它却是浓缩了自然界很多事物的共性,那就是分叉、层层递进和有序。针对这些共性,计算机科学家们又总结出普遍性的算法,能够具体应用到实际生活问题中去。
前一篇文章:
365 天,每天坚持写作之 143/365,爱上自己的每一天!
我在「知识星球」上开了个专栏,名字叫做“第二身份试验场”,主旨是每个人应该多在自己身上投资,不断挖掘培养自身优势,打造第二收入。同时,我会记录我每日的成长经历与感悟,希望在2019年的每一天里跟大家一起共同精进:发生、记录、感悟、反思、分享。
即刻加入,点击阅读原文,或扫一扫以下二维码。
以上是关于二叉树数据结构的主要内容,如果未能解决你的问题,请参考以下文章