Пример #1
0
        public void RedBlackBSTTest3()
        {
            Alphabet alpha = Alphabet.LowerCase; // ab..z
            Random   rnd   = new Random();
            RedBlackBST <int, char> bst = new RedBlackBST <int, char>();

            int[] keys = new int[32];
            for (int i = 0; i < keys.Length; i++)
            {
                keys[i] = i * 2;
                int index = rnd.Next(alpha.Radix);
                bst[keys[i]] = alpha.ToChar(index);
            }

            int min = keys.Min();
            int max = keys.Max();

            Assert.AreEqual(max, bst.Max);
            Assert.AreEqual(min, bst.Min);

            int ceiling = keys.First(n => n >= min + 1);
            int floor   = keys.Last(n => n <= max - 1);

            Assert.AreEqual(ceiling, bst.Ceiling(min + 1));
            Assert.AreEqual(floor, bst.Floor(max - 1));

            int ith = 3;

            Assert.AreEqual(ith, bst.Rank(ith * 2));
            Assert.AreEqual(keys.Length - ith, bst.Size(ith * 2, (keys.Length - 1) * 2));
        }