Пример #1
0
        public void RandomAddRemoveTest()
        {
            const int NUMBERS_TO_ADD = 200;

            MyAVLTREE <int, string> myAVLTREE = new MyAVLTREE <int, string>();
            List <int> addedValues            = new List <int>();
            Random     random = new Random(System.DateTime.Now.Millisecond.GetHashCode());

            for (int i = 0; i < NUMBERS_TO_ADD; i++)
            {
                int randomNumber = random.Next(100);
                myAVLTREE.Add(randomNumber, "");
                addedValues.Add(randomNumber);

                Assert.That(myAVLTREE.Height(), Is.LessThan(MaxHeight(myAVLTREE) + 1), $"Add from: {string.Join(",", addedValues)}");
            }

            var        allAdded       = addedValues.ToArray();
            List <int> removedIndeces = new List <int>();

            while (addedValues.Count > 0)
            {
                int rnd = random.Next(addedValues.Count());
                removedIndeces.Add(rnd);
                int toRemove = addedValues[rnd];
                addedValues.RemoveAt(rnd);

                myAVLTREE.Remove(toRemove);

                Assert.That(myAVLTREE.Height(), Is.LessThan(MaxHeight(myAVLTREE) + 1), $"Removed indices from {string.Join(",", addedValues)}: {string.Join(",", removedIndeces)}");
            }
        }
Пример #2
0
        public void TestDelete1()
        {
            MyAVLTREE <int, string> myAVLTREE = new MyAVLTREE <int, string>();

            myAVLTREE.Add(10, "");
            myAVLTREE.Add(8, "");
            myAVLTREE.Add(13, "");
            myAVLTREE.Add(11, "");
            myAVLTREE.Add(14, "");

            myAVLTREE.Remove(8);
            Assert.That(myAVLTREE.Root.Left.Key, Is.EqualTo(10));
            Assert.That(myAVLTREE.Root.Right.Key, Is.EqualTo(14));
            Assert.That(myAVLTREE.Height, Is.EqualTo(3));
        }