Ejemplo n.º 1
0
		void TestRbTree::testCase1() {

			RBTree<int, int> tree;
			vector<int> v;
			int i =0;
			for (int i = 0; i < 20; ++i) {
				v.push_back(i);
			}
			random_shuffle(v.begin(), v.end());
			copy(v.begin(), v.end(), ostream_iterator<int>(cout, " "));
			cout << endl;
			stringstream sstr;
			for (i = 0; i < v.size(); ++i) {
				tree.Insert(makePair(v[i], i));
				cout << "insert:" << v[i] << endl;   //添加结点
			}
			for (i = 0; i < v.size(); ++i) {
				cout << "Delete:" << v[i] << endl;
				tree.Delete(v[i]);             //删除结点
				tree.InOrderTraverse();
			}
			cout << endl;
			tree.InOrderTraverse();
			std::cout << "case1 passed" << std::endl;
		}
Ejemplo n.º 2
0
int main(int argc, char* argv[])
{
	RBTree<Key, uint32_t> rbtree = 
		RBTree<Key, uint32_t>::CreateRBTree(INSERT_NUM);

	Key delKeyBuffer[DELETE_NUM];
	for(int i=0; i<INSERT_NUM; ++i)
	{
		Key key;
		memset(&key, 0, sizeof(Key));
		key.Uin = random() % 3;
		key.Timestamp = random() % 10;
		key.Count = i;

		if(i % 2 == 0)
			memcpy(&delKeyBuffer[i/2], &key, sizeof(Key));

		uint32_t* pValue = rbtree.Hash(key, true);
		*pValue = i;
	}

	Key maxKey;
	rbtree.Maximum(&maxKey);
	rbtree.DumpTree();

	for(int i=0; i<DELETE_NUM; ++i)
	{
		rbtree.Clear(delKeyBuffer[i]);
	}

	rbtree.Maximum(&maxKey);
	rbtree.DumpTree();

	printf("\n//////////////////////////////////////////////////////////////////\nAll Data:\n");

	Key key;
	uint32_t* pValue = NULL;
	RBTree<Key, uint32_t>::RBTreeIterator iter = rbtree.Iterator();
	while((pValue = rbtree.Next(&iter, &key)))
	{
		printf("Next:%02u Key:(%s)\n", iter.Index, KeySerialization<Key>::Serialization(key).c_str());
	}

	printf("\n//////////////////////////////////////////////////////////////////\nSELECT * FROM t WHERE Uin=1 AND Timestamp>=2 ORDER BY Count DESC;\n");

	Key vkeyBegin = {1, 2, 0xffffffff};
	iter = rbtree.Iterator(vkeyBegin);

	Key vkeyEnd = {2, 0, 0};
	RBTree<Key, uint32_t>::RBTreeIterator iterEnd = rbtree.Iterator(vkeyEnd);

	while(iter != iterEnd && (pValue = rbtree.Next(&iter, &key)))
	{
		printf("Next:%02u End:%02u Key:(%s)\n", iter.Index, iterEnd.Index, KeySerialization<Key>::Serialization(key).c_str());
	}

	rbtree.Delete();
	return 0;
}
Ejemplo n.º 3
0
int main(int argc,char* argv[])
{
    RBTree<int> tree;
    int array[] = {12,1,9,2,0,11,7,19,4,15,18,5,14,13,10,16,6,3,8,17};
    for(int i=0;i<sizeof(array)/sizeof(array[0]);i++)
        tree.Insert(array[i]);
    std::cout<<"preOrder:"<<std::endl;
    tree.PreOrderTraver();
    std::cout<<"delete 6 num,preOrder:"<<std::endl;
    tree.Delete(12);
    tree.Delete(1);
    tree.Delete(9);
    tree.Delete(2);
    tree.Delete(0);
    tree.Delete(11);
    tree.PreOrderTraver();
}
Ejemplo n.º 4
0
int main()
{
    RBTree<int> tree;
    int i;
	int t[]={0,1,2,3,4,5,6,7,8,-1,-2,-3,-4,-5,-6,-7,-8};
    for(i=0;i<17;i++)
        tree.Insert(t[i]);

	cout<<"InROrder:"<<endl;
    tree.InROrder();

    cout<<"\nOutLevelROrder:"<<endl;
    tree.OutLevelROrder();

    cout<<"\nOutLevelROrder:"<<endl;
    tree.Delete(3);
    tree.OutLevelROrder();

    return 0;
}