引言 二叉查找树是一种能将链表插入的灵活性和有序数组查找的高效性结合起来的一种重要的数据结构,它是我们后面学习红黑树和AVL树的基础,本文我们就先来看一下二叉查找树的实现原理。 二叉查找树的定义 二叉查找树最重要的一个特征就是:每个结点都含有一个Comparable的键及其相关联的值,该结点的键要大 ...
分类:
其他好文 时间:
2017-04-08 13:38:06
阅读次数:
189
时间限制: 2 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 大师 Master 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 大师 Master 时间限制: 2 s 时间限制: 2 ...
分类:
其他好文 时间:
2017-04-08 09:21:17
阅读次数:
163
直接上代码 在讨论性能之前,首先需要明确的是,我们在编写SQL语句的时候,尽量要减少不必要字段的输出,文中出于演示,所以都用的*,在实际中不要这样!!还有就是要根据业务逻辑,比如查询条件,建立合适的聚合索引和非聚合索引,索引对于查找的效率影响非常大,SQL中的索引其实就是建立某种平衡查找树 采用To ...
分类:
数据库 时间:
2017-04-05 23:50:23
阅读次数:
328
前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据结构,即红黑树(Red-Black Tree) ...
分类:
编程语言 时间:
2017-04-05 13:55:20
阅读次数:
222
下面对本算法做原理上的介绍: 1、 如何回溯修改祖先结点的平衡因子 我们知道,在AVL树上插入一个新结点后,有可能导致其他结点BF值的改变,哪些结点的BF值会被改变?如何计算新的BF值呢?要解决这些问题,我们必须理解以下几个要点: l 只有根结点到插入结(橙色结点)点路径(称为插入路径)上的结点的B ...
分类:
其他好文 时间:
2017-04-05 09:24:25
阅读次数:
222
红黑树是平衡树的一种,保证最坏情况下操作时间复杂度为O(lgo(n))。红黑树的应用比较广泛,比如作为C++中STL的set和map的底层数据结构,Java集合中TreeSet和TreeMap的底层数据结构等。学习红黑树,可以把二叉查找树作为参考,这样有助于加深理解。红黑树的操作主要包括节点旋转、插 ...
分类:
其他好文 时间:
2017-04-04 11:50:14
阅读次数:
226
关于B+树数据结构 ①InnoDB存储引擎支持两种常见的索引。 一种是B+树,一种是哈希。 B+树中的B代表的意思不是二叉(binary),而是平衡(balance),因为B+树最早是从平衡二叉树演化来的,但是B+树又不是一个平衡二叉树。 同时,B+树索引并不能找到一个给定键值的具体行。B+树索引只 ...
分类:
数据库 时间:
2017-03-31 21:54:59
阅读次数:
215
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 ...
分类:
编程语言 时间:
2017-03-30 21:44:52
阅读次数:
242
树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用。 二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。二叉树的每个结点至多只有二棵子树(不存在度大于2 ...
分类:
编程语言 时间:
2017-03-30 17:22:55
阅读次数:
266
摘要:面试也是一门学问,在面试之前做好充分的准备则是成功的必须条件,而程序员在代码面试时,常会遇到编写算法的相关问题,比如排序、二叉树遍历等等。在程序员的职业生涯中,算法亦算是一门基础课程,尤其是在面试的时候,很多公司都会让程序员编写一些算法实例,例如快速排序、二叉树查找等等。本文总结了程序员在代码 ...
分类:
编程语言 时间:
2017-03-30 11:26:40
阅读次数:
321