计算机思维: 二叉树的来源
引言
真实的世界里,到底是具体的数值重要,还是数值之间相对的大小更重要?
在计算机科学中,相对的大小要比绝对的数量更重要
。这一点,计算机科学和数、理、化都不相同,计算机只看重相对的输赢。
任何选择都比没有选择要好!在生活中也是如此,我们通常无法脚踩两只船
。
工具的发明是针对问题来的:
-
在数学上要计算数字,人类就发明了算盘。 -
在物理学上,要测量绝对的数值,人类就发明了各种度量长度的尺子、计时的钟、称重量的天平和秤等等。 -
在化学上,要测量化学反应的当量,人类就发明了各种有刻度的量器。 -
在计算机中,由于经常要做的事情是判断真假、比较大小、排序、挑选最大值这类的操作,而它们在计算机的世界里又如此重要,当然也就值得为这些事情专门设计一种数据结构,这种数据结构被称为二叉树。
I 二叉树
1、 我们在生活中,一些组织结构其实就是树状结构,比如一个公司的大老板是根结点, 2、这种怪怪的数据结构在计算机科学中有什么用处呢?
1)可以用于排序(从左到右是从小到大)、 2)快速查找到某一个数值。3)另外,网站的目录结构也是树状的(N个分叉), 因此,针对二叉树的各种算法,稍加改变,就可以用于互联网。比如,下载一个网站里面所有的网页,就会用到二叉树中的一种遍历算法。
1.1 二叉树排序的过程遵循的两条规则
-
先来的占据根部,以及靠近顶部层级比较高的位置,后来的放在相对靠下的位置。 -
每当一个分支的根部被占据之后,接下来的数字,是和根部的数字进行比较,小的放到左边分叉中,大的放到右边分叉中。
它左右两个分叉可以和比较大小后的两种结果自然对应起来。
1.2 内容总结:
-
工具是根据所遇到的问题而发明的
-
在计算机科学中,数据的相对大小比绝对的数值重要,出于很多数据比大小的需求以及其他一些需求,就产生了一个抽象的数据结构——二叉树。
-
和很多抽象的工具一样,二叉树其实能在现实生活中找到很多对应。除了比大小之外,我们的组织架构,我们的文件目录,网站的链接层次,以及锦标赛,都能对应到二叉树中。
-
对应到二叉树的问题,都有一些共性,解决它们之间问题的方法是可以触类旁通的。这就是我们要学习理论的目的.
II 作为二叉树的变种,哈夫曼树和红黑树在查询或者写入效率上做了优化呢?
目的不同:
-
哈夫曼树对应于哈夫曼编码,即信息论里的最短编码。这样可以保证平均的访问时间最短。哈夫曼编码的条件是必须事先知道每个码出现的频率。 -
红黑树是为了防止二叉树一个枝子太长,另一个太短, 导致效率不高。
使用红黑树,可以保证各个枝子的长度基本相等。代价是需要不断维持平衡。二叉搜索树和平衡二叉树的时间复杂度 与树的高度h相关,所以需要尽可能的降低树的高度
原文链接:https://blog.csdn.net/z929118967/article/details/115913603
III 二叉搜索树和平衡二叉树的时间复杂度
与树的高度h相关,所以需要尽可能的降低树的高度。
【二叉搜索树 Binary search tree、平衡二叉树Balanced binary tree】