Grafalgo
Library of useful data structures and algorithms
|
00001 #include "stdinc.h" 00002 #include "SaBstSet.h" 00003 #include "Util.h" 00004 #include "Utest.h" 00005 00006 using namespace grafalgo; 00007 using namespace std; 00008 00009 void basicTests() { 00010 int n = 13; 00011 SaBstSet st(n); 00012 int *perm = new int[n+1]; 00013 00014 Util::genPerm(n,perm); 00015 for (int i = 1; i <= n; i++) { 00016 st.setkey(perm[i],i); 00017 } 00018 string s; 00019 cout << st.toString(s); 00020 bst r1 = perm[1]; 00021 cout << "inserting in key order\n"; 00022 for (int i = 2; i <= n; i++) { 00023 st.insert(perm[i],r1); 00024 cout << st.toString(s) << endl; 00025 } 00026 cout << "removing in key order\n"; 00027 for (int i = 1; i < n; i++) { 00028 st.remove(perm[i],r1); 00029 cout << st.toString(s) << endl; 00030 } 00031 cout << "inserting in random order\n"; 00032 r1 = perm[n/2]; 00033 int j = 0; 00034 for (int i = 1; i <= n; i++) { 00035 j = (j+5) % n; 00036 if (j+1 == n/2) continue; 00037 st.insert(perm[j+1],r1); 00038 cout << st.toString(s) << endl; 00039 } 00040 00041 cout << "removing in node order\n"; 00042 for (int i = 1; i < n; i++) { 00043 st.remove(i,r1); 00044 cout << st.toString(s) << endl; 00045 } 00046 00047 /* 00048 Utest::assertEqual(st.toString(s), "(a*)\n(b*)\n(c*)\n(d*)\n(e*)\n" 00049 "(f*) (g*) (h*) (i*)\n(j*)" 00050 "(k*) (l*) (m*)", 00051 "initial trees not correct"); 00052 */ 00053 } 00054 00055 int main() { 00056 basicTests(); 00057 }