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; }
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; }
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(); }
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; }