
算法
yujunyu12
一个笨蛋
展开
-
Android重学系列 二叉搜索树
背景Binder这一块涉及的比较广,囫囵吞枣的讲,结果只会把字数堆上多高我不清楚。清楚的是,这样阅读起来吃力。而Binder涉及的知识面比较广,在Binder驱动下层使用到了红黑树,因此我将提前讲红黑树算法(相当于知识点捡漏吧)。本来这个算法专题,我准备是说完四大组件的源码原理之后,开启的一个新的专栏。为了说清楚这个Binder,我提前梳理一遍我所理解的红黑树。但是思考了半天,感觉如果连二叉搜索...原创 2019-04-13 19:47:34 · 489 阅读 · 0 评论 -
Android重学系列 AVL树
背景接着上面那个二叉搜索树来讲。有思考过二叉搜索树最差的搜索时间复杂度吗?最差的时候,二叉搜索树插入的数据刚好是一条直线,这样时间复杂度就蜕变和链表没什么区别(就是从O(logN)蜕变到O(n)级别)。因此AVL树因此诞生了。如下图所示:正文AVL树有什么概念呢?在二叉搜索树之上,我们为了保证整个树都有左右节点,尽量做到每个大小的节点都均匀分布,也就在二叉搜索上添加一个约束:每个结点...原创 2019-04-13 19:49:40 · 289 阅读 · 0 评论 -
Android重学系列 红黑树
背景红黑树,是一个比较复杂的数据结构。让我们分析一下,整个AVL树的性质。AVL最明显的特点就是,每个节点左右子树的高度差不超过1。那么就会势必产生这样的性质:当插入一个新的节点的时候时间复杂度是O(LogN)还有没有办法更快的?因此红黑树诞生了。正文先介绍一下红黑树的概念:这是一种特殊的二叉搜索树。这种二叉搜索树将会符合如下5条性质:1.每个节点都是黑色或者红色的。2.根节点是黑色...原创 2019-04-13 19:51:03 · 1051 阅读 · 0 评论