前面两部分终于把基础概念和插入学习完了,下面就是红黑树里最复杂的结点删除了。难啃的骨头慢慢啃,我们开始吧!
在<一>中,我们已经阐释了红黑树的基本概念和特性,明白了其在基本操作上能始终保持O(lgn)的复杂度,都归功于在操作的同时能维持其红黑树的特性。我们还提到了红黑树的旋转,它是在对红黑树进行了修改之后进行特性维持的关键步骤。那么下面我们就要来看看对红黑树进行了插入与删除之后,具体如何维持红黑树的特性。
好久没有写博客了。除了一部分的时间在做实验室的东西,其他的时间都在研究数据结构。每天的书桌上都放着两本砖头一般厚的书:一本是经典的算法导论,还有一本是带有一些c++描述的算法与数据结构。算法导论以前就看过一些,总体而言偏重于数学理论和思维逻辑,每个算式都是有理有据的推导,结论也十分的明确,但是推导的过程比较繁复,实现方面也是用的伪代码。照理说伪代码是最好的,可以翻译成各种语言的代码,但是同时它也是最没有针对性的,可以说不是任何一种代码,这时,后者就可以弥补这一方面的缺陷。
通过最近一段时间的学习,数据结构的内容已经完成过半。在学习的过程中,红黑树部分可以说是碰到的第一个让人有点喘不过气的部分,所以在学习的同时希望记录下来,以供后续阶段的复习回顾。
写这篇博客完全是因为前面写的贪吃蛇游戏,所以说写些有兴趣的代码还是可以发现和学习到很多自己平时看书注意不到的东西的,建议大家要多学多看多练。嗯,下面就开始今天的笔记吧。
通过上一部分的分析,我们已经完成了游戏的地图和基本的游戏元素,其主要的思想就是:通过js的DOM编程来动态添加和修改html元素和其属性,然后通过css来控制其界面的显示。现在我们需要进一步的深入,来解释后面几个逻辑的具体实现方法。
最近都在学习js,学习间隙总想拿点项目练习,而贪吃蛇作为一个简单的小游戏正适合。相信大家都玩过贪吃蛇,我记得我第一次看到这个游戏是在小学的时候。当时家里买了个新手机,黑白的屏幕,点开游戏映入眼帘的就是贪吃蛇。虽然当时手机屏幕还是那么的小,分辨率还是那么低,但是这个游戏还是让我不亦乐乎,好了扯远了,下面我们就用js实现一下这个游戏吧!