예제 #1
0
        public void EmptyTreeRemove()
        {
            KevinBst <string> stringTree = new KevinBst <string>();
            int key = 0;

            stringTree.Remove(key);
        }
예제 #2
0
        public void EmptyTreeLookup()
        {
            KevinBst <string> stringTree = new KevinBst <string>();
            int key = 0;

            stringTree.Lookup(key);
        }
예제 #3
0
        public void TestTreeToString()
        {
            KevinBst <string> testTree = BuildTestTree();
            IVisitor <string> visitor  = new StringBuilderVisitor();

            testTree.TraverseInOrder(visitor);
            Console.WriteLine(visitor.ToString());
        }
예제 #4
0
        public void SingletonTreeFailedLookup()
        {
            KevinBst <string> stringTree = new KevinBst <string>();
            int    key   = 20;
            string value = key.ToString();

            stringTree.Insert(key, value);
            stringTree.Lookup(key + 1);
        }
예제 #5
0
        public void SingletonTreeSuccessfulLookup()
        {
            KevinBst <string> stringTree = new KevinBst <string>();
            int    key   = 20;
            string value = key.ToString();

            stringTree.Insert(key, value);
            Assert.AreEqual(stringTree.Lookup(key), value);
        }
예제 #6
0
        public void RemoveRightChildLeafNode()
        {
            KevinBst <string> testTree = BuildTestTree();

            testTree.Remove(key: 15);
            IVisitor <string> visitor = new StringBuilderVisitor();

            testTree.TraverseInOrder(visitor);
            Console.WriteLine(visitor.ToString());
        }
예제 #7
0
        public void RemoveLeftChildOnlyHasLeftChild()
        {
            KevinBst <string> testTree = BuildTestTree();

            testTree.Remove(key: 15);
            // now 10 only has left child 5
            testTree.Remove(key: 10);
            IVisitor <string> visitor = new StringBuilderVisitor();

            testTree.TraverseInOrder(visitor);
            Console.WriteLine(visitor.ToString());
        }
예제 #8
0
        public void RemoveRightChildOnlyHasRightChild()
        {
            KevinBst <string> testTree = BuildTestTree();

            testTree.Remove(key: 25);
            // now 30 only has right child 35
            testTree.Remove(key: 30);
            IVisitor <string> visitor = new StringBuilderVisitor();

            testTree.TraverseInOrder(visitor);
            Console.WriteLine(visitor.ToString());
        }
예제 #9
0
        private KevinBst <string> BuildTestTree()
        {
            KevinBst <string> bst  = new KevinBst <string>();
            List <int>        keys = new List <int>()
            {
                20,
                10,
                30,
                5,
                15,
                25,
                35
            };

            foreach (int key in keys)
            {
                bst.Insert(key, key.ToString());
            }

            return(bst);
        }