关于红黑树
其实之前看算法的红宝书就有些印象,红黑树是2-3-4树
介绍一篇在知乎上的文章 什么是红黑树
做开发的朋友一定知道接口这个东西:定义接口,给出实现。一个接口可以有多种不同的实现,但是这些实现都会满足接口中的声明。
例如,我们定义手机是一个可用作通讯的工具,作为它的实现,三星,苹果,华为推出了各式各样的产品。
红黑树的本质其实也是对概念模型:2-3-4树的一种实现,因此我们先来关注2-3-4树
这里讲的还是很容易理解和明白的,不管是什么算法、数据结构,首先会有一个模型或者说是概念,在理论上是可能的。能够达到我们对这种算法的要求,时间、性能、复杂度等等,然后会根据这个模型去设计或者说实现我们的算法,
2-3-4树中的2节点对应着红黑树中的黑色节点,而2-3-4树中的非2节点是以红节点+黑节点的方式存在,红节点的意义是与黑色父节点结合,表达着2-3-4树中的3,4节点。
这里可以看到一个2-3节点的红黑方式的展示
最后关于4节点的介绍,感觉用到的很少
算法4中关于不同算法的讲解还基本是从概念出发的
算法4中给出的红黑树是基于2-3树实现,而且这种实现的红黑树十分特殊,它要求概念模型中的3节点在红黑树中必须用左倾的红色节点来表示。这种限定能够很大的减少红黑树调整过程中的复杂性,我们将在接下来的内容中体会到这一点。
其实当时看算法4的时候带的功利性太强,看的时候就是看怎么能够快速理解这些算法,或者说能够手撕这些算法,用在面试的时候。
俗话说得好,磨刀不误砍柴工。当你希望能够掌握一个复杂度高的技能的时候,往往需要能够先理解背后的基本原理,基本的概念,来龙去脉。等真正理解算法、掌握算法之后,再去实现就会事半功倍。
这也是我现在工作中所理解到的,之前总是会很着急先上手,期望通过直接手撕代码,快速掌握。后面出了问题,就很容易陷入迷茫,不知所措。
但如果你一开始就能够