[Data Structure]
一刀不二
这个作者很懒,什么都没留下…
展开
-
有点迷糊的 B 树 delete 操作
1.如果键 在节点 中,且 是叶子节点,则从 中删除键 。2. 如果键 在节点 中,且 是内部节点,请执行以下操作:a. 如果节点 中位于 之前的子节点 至少有 个键,则在以为根的子树中找到 的前驱值。将中的 替换为,并递归地删除 。b. 对称地,如果节点 中位于 后面的子节点 至少有 个键,则在以 为根的子树中找到 的后继值 。将 中的 替换为 ,并递归地删除 。c. 否则,如果 和 都只有 键,那么...原创 2020-05-30 16:54:16 · 231 阅读 · 0 评论 -
POJ 2418 Hardwood Species( AVL-Tree )
#include #include #include #include typedef struct AVLTree{ char name[31]; int nCount; int nHeight; struct AVLTree* pLeft; struct AVLTree* pRight;}AVLTree;int Max( int原创 2014-10-19 16:37:09 · 852 阅读 · 0 评论 -
高度平衡树 -- AVL 树
原本打算用 Cpp,Ada,Python 各重写一份,觉得这种行为比较2.因为还是 Scheme 的表达最优雅.#lang scheme( define nil '() )( define ( root tree )( car tree ) )( define ( left-tree tree )( cadr tree ) )( define ( right原创 2014-08-17 00:39:03 · 2229 阅读 · 0 评论 -
多维空间树 kd-tree
#lang scheme( define ( make-node point axis left-child right-child ) ( define ( dispatch msg . args ) ( cond [ ( eq? msg 'point ) point ] [ ( eq? msg 'axis ) axis原创 2015-05-26 17:08:07 · 1682 阅读 · 0 评论 -
HDU 2222 Keywords Search ( AC 自动机 )
#include #include #include using namespace std;#define CHILD_SIZE 26struct TrieNode { TrieNode* fail_pointer; TrieNode* childs[CHILD_SIZE]; int occurrences; TrieNode() {原创 2015-05-27 23:57:48 · 614 阅读 · 0 评论 -
HDU 1251 统计难题
#include #include #include #include using namespace std;#define MAX_SIZE 26struct TrieNode { int char_count; TrieNode* son_char[MAX_SIZE];};void clear_node( TrieNode* node ) {原创 2015-05-25 01:35:46 · 560 阅读 · 0 评论 -
Basic Trie Tree
#include #include using namespace std;#define MAX_SIZE 26struct TrieNode { int char_count; char ch; TrieNode* son_char[MAX_SIZE];};void clear_node( TrieNode* node ) { node->c原创 2015-05-25 00:57:30 · 493 阅读 · 0 评论 -
python rmq
import mathdef init( arr ): arr_len = len( arr ) exp = int( math.log( arr_len, 2 ) ) DP = [ [ 0 for col in range( exp + 1 ) ] for row in range( arr_len + 1 ) ] for index, item in原创 2015-10-09 01:20:25 · 831 阅读 · 0 评论 -
Standard ML 无穷数据
datatype 'a seq = Nil| Cons of 'a * ( unit -> 'a seq );exception Empty;fun head( Cons( x, xf ) ) = x | head( Nil ) = raise Empty;fun tail( Cons( x, xf ) ) = xf() | tail( Nil ) = rais原创 2016-04-05 15:23:10 · 1189 阅读 · 0 评论 -
树状数组求逆序数
#include #include #include using namespace std;#define SIZE 500010int countNum[SIZE];struct Node{ Node():val(0),ID(0){}; int val; int ID;};int lowBit( const int& index ){ r原创 2013-11-24 18:46:08 · 918 阅读 · 0 评论 -
树状数组 POJ 2481 Cows
#include #include #include #include #include #include using namespace std;#define SIZE 10005int max_n = INT_MIN;struct Node{ Node():left(0), right(0), ID(0){} int left;原创 2013-11-24 01:18:22 · 1176 阅读 · 0 评论 -
Python 线段树求区间覆盖
max_size = 100class Node( object ): def __init__( self ): self.left = -1 self.right = -1 self.sum_num = 0 def __str__( self ): return '[%s,%s,%s]'%( s原创 2014-03-06 18:21:18 · 2622 阅读 · 0 评论 -
并查集小记
实现不相交集合数据结构的几种方式:单纯的快速查找:若id相同则在一个集合中,下图中,( 2, 3, 4, 9 )为一集合, 3 和 6 不在一个集合中合并集合时,需逐个比较将两个集合的 id 统一,慢缺陷:合并慢==================================================2.单纯的快速合并:原创 2014-06-07 00:43:25 · 1426 阅读 · 0 评论 -
Python 线段树
原本打算将线段树的show_tree_struct可以完全显示为树形的,distance的设置太麻烦,就省略了。 from math import powclass SegmentTree( object ): def __init__( self, left, right ): self.left = int( left ) self原创 2014-03-06 12:52:43 · 4147 阅读 · 0 评论 -
POJ 1703 Find them, Catch them
题意:有两个帮派龙帮,蛇帮,警察需要验证嫌疑人属于哪个帮派。需要解决的问题是,给出两个嫌疑人,你必须通过不完全的信息,判断他们是否属于一样帮派。有 N ( 1 1.D a b 意味着 a 和 b 属于不同帮派2.A a b 查询 a 和 b 是否属于一个帮派输入:第一行测试次数,第二行两个整数,N,M 意味着有 N 个嫌疑人和 M 条信息接下来的M行输入信息原创 2014-06-08 02:55:17 · 966 阅读 · 0 评论 -
哈弗曼编码解码
#lang scheme( define l ( list 1 2 3 4 ) )( define l1 ( list 5 6 7 8 ) )( define nil '() )( define ( make-leaf symbol weight ) ( list 'leaf symbol weight ) ) ( define ( l原创 2014-08-09 00:35:17 · 1422 阅读 · 0 评论 -
树状数组 POJ 2352 Star
#include #include using namespace std;#define SIZE 320010#define CLR( arr, val ) memset( arr, val, sizeof(arr) )int tree[SIZE];int level[SIZE];int max_size;int lowBit( int index ){原创 2013-11-23 17:51:37 · 928 阅读 · 0 评论