数据结构
qianji_little_boy
这个作者很懒,什么都没留下…
展开
-
跳表SkipList详解
有序表的搜索:如果要搜索23, 43, 59要比较的次数分别为2, 4, 6次,我们把一些节点提取出来作为索引,生成如下那么搜索43可以跳过23, 搜索 59可以跳过23, 43;实现了搜索的加速,提高层数 寻找59,我们可以跳过更多的节点调表的实现:搜索时,从上往下找,上层的数作为filter,类似于二分查找 每一个数的层数由插入时,通过一定的概率决定在多少层 在...原创 2018-11-15 21:01:13 · 204 阅读 · 0 评论 -
红黑树
R-B Tree,全称Red-Black Tree, 又称红黑树,每个节点都有颜色属性红黑树特性:每个节点是红色或者黑色 根节点是黑色 叶节点是黑色(这里的叶子节点指为空的叶子节点) 红色叶子节点的子节点必须是黑色 对于每个节点,该节点到叶子节点的所有路径中,黑色节点数相同 特性5保证了一个节点到叶子节点的所有路径中,没有一条路径会比其他路径长出两倍 红黑树的优势:...转载 2018-12-27 20:30:52 · 80 阅读 · 0 评论 -
BSF 与 DSF
宽度优先搜索:宽度优先,使用队列实现深度优先搜索:深度优先,使用队列实现例如下图,使用BSF,遍历顺序为1,2,3,4,5,6,7; 使用DSF顺序为1, 2, 4, 5, 3, 6, 7节点类型:class Node {public: int value; vector<Node*> nexts; //该节点的next节点 Node(int v...原创 2019-01-06 11:28:11 · 2775 阅读 · 0 评论 -
先序、中序、后序遍历
先序遍历:本身节点,左节点,右节点思想:想实现中、左、右就需要先压入右,再压入左。使用栈首先把头节点压入,把头节点弹出,访问;有右节点就把右节点压入,有左节点就把左节点压入;弹出就实现了中, 左, 右代码实现:void preOrder(Node* head) { if (head == NULL) { return; } stack<Node*> st;...原创 2019-01-07 11:15:49 · 587 阅读 · 0 评论