1、常见数据结构线性:数组,链表,队列,堆栈,块状数组(数组+链表),hash表,双端队列,位图(bitmap)树:堆(大顶堆、小顶堆),trie树(字母树or字典树),后缀树,后缀树组,二叉排序/查找树,B+/B-,AVL树,Treap,红黑树,splay树,线段树,树状数组图:图其它:并查集2、常见算法(1) 基本思想:枚举,递归,分治,模拟,贪心,动态规划,剪枝,回溯(2) 图算法:深度优先遍历与广度优先遍历, 最短路径,最小生成树,拓扑排序(3) 字符串算法:字符串查找,hash算法,KMP算法(4) 排序算法:冒泡,插入,选择,快排,归并排序,堆排序,桶排序(5) 动态规划:背包问题 Read More
开篇我先给出一个外国的splay tree的演示demo,跟着这个demo看下面的文章对你理解splay tree 有很大的帮助,并且里面有实现好的C语言版和java版 的splay tree(网站中输入节点个数会自动生成树,可以对其任意造作)网站衔接:http://www.link.cs.cmu.edu/cgi-bin/splay/splay-cgi.pl一、简介:伸展树,或者叫自适应查找树,是一种用于保存有序集合的简单高效的数据结构。伸展树实质上是一个二叉查找树。允许查找,插入,删除,删除最小,删除最大,分割,合并等许多操作,这些操作的时间复杂度为O(logN)。由于伸展树可以适应需求序列 Read More