static public void Main() { // create MyObjs containing key and string data MyObj obj1 = new MyObj(0003, "MyObj C"); MyObj obj2 = new MyObj(0001, "MyObj A"); MyObj obj3 = new MyObj(0002, "MyObj B"); MyObj obj4 = new MyObj(0004, "MyObj D"); MyObj obj5 = new MyObj(0005, "MyObj E"); try { // format: Add(key, value) treap.Add(new MyKey(obj1.Key), obj1); Console.WriteLine("Added to Treap, key: " + obj1.ToString()); treap.Add(new MyKey(obj2.Key), obj2); Console.WriteLine("Added to Treap, key: " + obj2.ToString()); treap.Add(new MyKey(obj3.Key), obj3); Console.WriteLine("Added to Treap, key: " + obj3.ToString()); treap.Add(new MyKey(obj4.Key), obj4); Console.WriteLine("Added to Treap, key: " + obj4.ToString()); treap.Add(new MyKey(obj5.Key), obj5); Console.WriteLine("Added to Treap, key: " + obj5.ToString()); Console.WriteLine(Environment.NewLine); DumpTreap(true); Console.WriteLine(Environment.NewLine); Console.WriteLine("- Treap Values -"); TreapEnumerator t = treap.Values(); while (t.MoveNext()) { Console.WriteLine(((MyObj)(t.Value)).Data); } Console.WriteLine(Environment.NewLine); Console.WriteLine("- Treap Keys -"); TreapEnumerator k = treap.Keys(); while (k.MoveNext()) { Console.WriteLine(k.Key); } Console.WriteLine(Environment.NewLine); DumpMinMaxValue(); Console.WriteLine(Environment.NewLine); // test Remove MyKey tObjKey = (MyKey)treap.GetMinKey(); MyObj tObj = (MyObj)treap.GetData(tObjKey); Console.WriteLine("Remove Min Key: " + tObj.ToString()); Console.WriteLine(Environment.NewLine); treap.Remove(tObjKey); DumpTreap(false); Console.WriteLine(Environment.NewLine); Console.WriteLine("Remove Max Value:" + treap.GetMaxValue().ToString()); treap.RemoveMax(); Console.WriteLine("Remove Min Value:" + treap.GetMinValue().ToString()); treap.RemoveMin(); Console.WriteLine(Environment.NewLine); DumpTreap(true); Console.WriteLine(Environment.NewLine); Console.WriteLine("Remove Min Key:" + ((MyKey)(treap.GetMinKey())).ToString()); treap.RemoveMin(); Console.WriteLine("Remove Max Key:" + ((MyKey)(treap.GetMaxKey())).ToString()); treap.RemoveMax(); Console.WriteLine(Environment.NewLine); DumpTreap(true); Console.WriteLine(Environment.NewLine); // add some more and clear the treap Console.WriteLine("- Adding MyKeyObjs - "); Console.WriteLine(Environment.NewLine); MyKeyObj myKeyObj1 = new MyKeyObj(0025, "MyKeyObj W"); MyKeyObj myKeyObj2 = new MyKeyObj(0023, "MyKeyObj X"); MyKeyObj myKeyObj3 = new MyKeyObj(0026, "MyKeyObj Y"); MyKeyObj myKeyObj4 = new MyKeyObj(0024, "MyKeyObj Z"); treap.Add(myKeyObj1.Key, myKeyObj1); Console.WriteLine("Added to Treap, key: " + myKeyObj1.ToString()); treap.Add(myKeyObj2.Key, myKeyObj2); Console.WriteLine("Added to Treap, key: " + myKeyObj2.ToString()); treap.Add(myKeyObj3.Key, myKeyObj3); Console.WriteLine("Added to Treap, key: " + myKeyObj3.ToString()); treap.Add(myKeyObj4.Key, myKeyObj4); Console.WriteLine("Added to Treap, key: " + myKeyObj4.ToString()); Console.WriteLine(Environment.NewLine); TraverseEnumerator(); Console.WriteLine(Environment.NewLine); Console.WriteLine("- Clearing Treap -"); Console.WriteLine(Environment.NewLine); treap.Clear(); DumpTreap(true); Console.WriteLine(Environment.NewLine); Console.WriteLine("Press enter to terminate"); Console.ReadLine(); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.WriteLine("Press enter to terminate"); Console.ReadLine(); } }