コード例 #1
0
        public void WeissTest()
        {
            tree = new SplayTree <int>();
            const int NUMS = 40000;
            const int GAP  = 307;

            for (int i = GAP; i != 0; i = (i + GAP) % NUMS)
            {
                tree.Add(i);
            }

            for (int i = 1; i < NUMS; i += 2)
            {
                tree.Remove(i);
            }

            Assert.AreEqual(2, tree.Minimum);
            Assert.AreEqual(NUMS - 2, tree.Maximum);

            for (int i = 2; i < NUMS; i += 2)
            {
                Assert.IsTrue(tree.Contains(i));
            }

            for (int i = 1; i < NUMS; i += 2)
            {
                Assert.IsFalse(tree.Contains(i));
            }
        }
コード例 #2
0
 public void ConstructFromEnumerable()
 {
     int[] array = new int[] { 41, 92, 71, 12, 20 };
     tree = new SplayTree <int>(array);
     Assert.AreEqual(array.Length, tree.Count);
     foreach (int item in array)
     {
         Assert.IsTrue(tree.Contains(item));
     }
 }
コード例 #3
0
        public void SplitKeepTest()
        {
            tree = new SplayTree <int> {
                5, 11, 8, 13, 3, 7, 12
            };
            SplayTree <int> leftover = tree.SplitAt(11, true);

            Assert.AreEqual(5, tree.Count);
            Assert.AreEqual(2, leftover.Count);
            Assert.IsTrue(tree.Contains(3));
            Assert.IsTrue(tree.Contains(5));
            Assert.IsTrue(tree.Contains(7));
            Assert.IsTrue(tree.Contains(8));
            Assert.IsTrue(tree.Contains(11));
            Assert.IsFalse(tree.Contains(12));
            Assert.IsFalse(tree.Contains(13));
            Assert.IsTrue(leftover.Contains(12));
            Assert.IsTrue(leftover.Contains(13));
        }
コード例 #4
0
 public void RootTest()
 {
     tree = new SplayTree <int> {
         5, 3, 7
     };
     Assert.IsTrue(tree.Contains(5));
     Assert.AreEqual(5, tree.Root);
     Assert.AreEqual(7, tree.Right);
     Assert.AreEqual(3, tree.Minimum);
     Assert.AreEqual(7, tree.Maximum);
 }
コード例 #5
0
        public void MergeTest()
        {
            tree = new SplayTree <int> {
                5, 3, 7, 12
            };
            SplayTree <int> tree2 = new SplayTree <int> {
                11, 8, 13
            };

            tree.Merge(7, tree2);
            Assert.AreEqual(6, tree.Count);
            Assert.AreEqual(0, tree2.Count);
            Assert.IsTrue(tree.Contains(3));
            Assert.IsTrue(tree.Contains(5));
            Assert.IsTrue(tree.Contains(7));
            Assert.IsTrue(tree.Contains(8));
            Assert.IsTrue(tree.Contains(11));
            Assert.IsFalse(tree.Contains(12));
            Assert.IsTrue(tree.Contains(13));
        }
コード例 #6
0
 public bool Contains(KeyValuePair <K, V> item)
 {
     return(tree.Contains(item));
 }