码迷,mamicode.com
首页 >  
搜索关键字:geeks    ( 60个结果
Geeks 一般二叉树的LCA
不是BST,那么搜索两节点的LCA就复杂点了,因为节点是无序的。 下面是两种方法,都写进一个类里面了。 当然需要重复搜索的时候,可以使用线段树及多种方法加速搜索。 #include #include using namespace std; class LCANormalTree { struct Node { int key; Node *left, *right;...
分类:其他好文   时间:2014-06-16 20:20:04    阅读次数:234
Geeks : Dijkstra’s Algorithm for Adjacency List Representation 最短路径
最短路径的O(ElgV)的解法。 使用邻接表存储图,使用堆操作选取下一个最小路径点。 本题的难度并不在最短路径本身这个算法,而是在于堆的操作: 1 使用双重指针操作堆的节点,可以省去直接复制操作堆节点,提高效率,并且这才是有效操作动态地址数据的方法,不用双重指针,我思考了下,觉得更加不好做。 2 使用一个数组记录当前顶点在堆中的位置,相当于一个hash表了,可以需要的时候,直接从表中查找表...
分类:其他好文   时间:2014-06-07 02:03:17    阅读次数:214
Geeks - AVL Tree Deletion 平衡二叉树 删除操作
注意: 1 判断一个节点是否平衡的方法 2 平衡一个节点的方法 : 我这里比原文改进一点,独立出一个平衡节点的函数balanceNode(),这样一个函数可以用来平衡插入和删除操作,使得代码更加简洁了。 这样修改之后就使得平衡二叉树好像和一般二叉树的操作比较,就是多了一个平衡操作。 3 删除操作情况很多,很困难,一定要理清思路。十分容易出bug的地方。 这里是查找后继节点的值,填补上到...
分类:其他好文   时间:2014-06-05 05:16:45    阅读次数:261
Geeks - AVL Tree Insertion 平衡二叉树
AVL可以保证搜索达到O(lgn)的时间效率,因为两边的树高都差不多。不会出现搜索是线性的最坏情况。 但是AVL在插入和删除节点的时候需要做较多的旋转操作,所以如果修改节点多的时候,最好使用红黑树,但是如果搜索多的时候,就最好使用AVL了。...
分类:其他好文   时间:2014-06-05 02:08:26    阅读次数:310
Poj Double Queue 3481 AVL解法
本题应该挺经典的,因为可以使用好多方法过,适合训练多种高级数据结构和算法。 这里使用AVL平衡二叉树的解法,时间还可以,大概300ms吧,内存很省188k,因为这里使用指针,没有浪费内存。 这里使用Geeks上面的AVL的做法,使用递归更新树,而不使用双亲指针,试了下使用双亲指针,真的好麻烦,要维护多一个指针,容易出错很多。 递归操作二叉树是非常优雅的。 而且不需要使用任何STL容器,非常...
分类:其他好文   时间:2014-06-05 01:56:58    阅读次数:269
Geeks Splay Tree Insert 树的插入操作
Splay树的插入操作,只需要处理好插入节点的孩子节点就可以了,最重要的是不要破坏了BST的基本规则。 因为高度并不是Splay树的首要因素,所以插入的时候也是使用splay操作,然后在根节点插入。 参考:http://www.geeksforgeeks.org/splay-tree-set-2-insert-delete/ 对比一下使用插入创建的树和手工创建数的区别,先序遍历的结果...
分类:其他好文   时间:2014-05-31 21:47:50    阅读次数:320
Geeks : Kruskal’s Minimum Spanning Tree Algorithm 最小生成树
寻找图中最小连通的路径,图如下: 算法步骤: 1. Sort all the edges in non-decreasing order of their weight. 2. Pick the smallest edge. Check if it forms a cycle with the spanning tree formed so far. If cycle is n...
分类:其他好文   时间:2014-05-25 07:35:59    阅读次数:301
Geeks Union-Find Algorithm Union By Rank and Path Compression 图环算法
同样是查找一个图是否有环的算法,但是这个算法很牛逼,构造树的时候可以达到O(lgn)时间效率。n代表顶点数 原因是根据需要缩减了树的高度,也叫压缩路径(Path compression),名字很高深,不过其实不难理解,简单来说就是每次查找一个节点的时候,都把这一路径中的所有节点都赋予根节点作为路径。 原文没指出的地方: 也因为需要压缩,所以初始化的时候注意,不能如前面简单实用Unio...
分类:其他好文   时间:2014-05-23 00:21:42    阅读次数:305
Geeks - Detect Cycle in a Directed Graph 判断图是否有环
Detect Cycle in a Directed Graph 判断一个图是否有环,有环图如下: 这里唯一注意的就是,这是个有向图, 边组成一个环,不一定成环,因为方向可以不一致。 这里就是增加一个数组保存当前已经访问过的路径信息 recStack[]; 而visited[]数组是访问过的点的信息,两者作用是不一样的。 助理这个知识点,这道题就很容易了。 原文: h...
分类:其他好文   时间:2014-05-21 15:07:14    阅读次数:269
Geeks - Union-Find Algorithm - Detect Cycle in a an Undirected Graph算法
利用Union Find的方法查找图中是否有环。 在于构建一个图数据结构,和一般图的数据结构不同的是这个图是记录了边的图,并在查找过程中不断把边连接起来,形成一个回路。 原文地址: http://www.geeksforgeeks.org/union-find/ #pragma once #include #include #include #include class Un...
分类:其他好文   时间:2014-05-21 14:12:15    阅读次数:287
60条   上一页 1 ... 4 5 6
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!