public void Delete_OneElementTree_ShouldMakeTreeEmpty()
        {
            var bst = new BinarySearchTree <int>();

            bst.Insert(5);

            bst.Delete(5);

            var nodes = new List <int>();

            bst.EachInOrder(nodes.Add);
            int[] expectedNodes = new int[] { };
            CollectionAssert.AreEqual(expectedNodes, nodes);
            Assert.AreEqual(expectedNodes.Length, bst.Count());
        }
        public void Insert_Single_TraverseInOrder()
        {
            var bst = new BinarySearchTree <int>();

            bst.Insert(1);

            var nodes = new List <int>();

            bst.EachInOrder(nodes.Add);

            var expectedNodes = new int[] { 1 };

            CollectionAssert.AreEqual(expectedNodes, nodes);
            Assert.AreEqual(expectedNodes.Length, bst.Count());
        }
        public void Range_ExistingElements_ShouldReturnCorrectCount()
        {
            var bst = new BinarySearchTree <int>();

            bst.Insert(20);
            bst.Insert(10);
            bst.Insert(5);
            bst.Insert(15);
            bst.Insert(17);
            bst.Insert(30);
            bst.Insert(25);
            bst.Insert(35);

            var result = bst.Range(5, 25);

            var expectedElements = new int[] { 5, 10, 15, 17, 20, 25 };

            Assert.AreEqual(expectedElements.Length, result.ToArray().Length);
        }
        public void Search_ExistingElement_ShouldReturnSubTree()
        {
            var bst = new BinarySearchTree <int>();

            bst.Insert(20);
            bst.Insert(10);
            bst.Insert(5);
            bst.Insert(15);
            bst.Insert(17);
            bst.Insert(30);
            bst.Insert(25);
            bst.Insert(35);

            var result = bst.Search(10);
            var nodes  = new List <int>();

            result.EachInOrder(nodes.Add);

            var expectedNodes = new int[] { 5, 10, 15, 17 };

            CollectionAssert.AreEqual(expectedNodes, nodes);
        }
 public void ContainsTest()
 {
     test.Insert(3);
     Assert.IsTrue(test.Contains(3));
 }