public void DeleteTest_DeleteNodeWithTwoChildren_SymPreHasTwoChildrenAsWell()
        {
            var t = new ImprovedBinSearchTree();

            t.Insert(10);
            t.Insert(5);
            t.Insert(6);
            t.Insert(4);
            var deleted = t.Delete(5);

            Assert.IsTrue(deleted);
            Assert.IsFalse(t.Search(5));
            Assert.IsTrue(t.Search(4));
            Assert.IsTrue(t.Search(6));
        }
        public void DeleteTest_SymmetricPredecessorIsChild_EzTree()
        {
            var t = new ImprovedBinSearchTree();

            t.Insert(10);
            t.Insert(5);
            t.Insert(6);
            t.Insert(4);
            var deleted = t.Delete(5);

            Assert.IsTrue(deleted);
            Assert.IsFalse(t.Search(5));
            Assert.IsTrue(t.Search(4));
            Assert.IsTrue(t.Search(6));
        }
        public void DeleteTest_DeleteRoot_CheckRest()
        {
            var t = new ImprovedBinSearchTree();

            t.Insert(10);
            t.Insert(5);
            t.Insert(15);
            t.Insert(17);
            var deleted = t.Delete(10);

            Assert.IsTrue(deleted);
            Assert.IsFalse(t.Search(10));
            Assert.IsTrue(t.Search(5));
            Assert.IsTrue(t.Search(15));
            Assert.IsTrue(t.Search(17));
        }
        public void PublicSearchTest()
        {
            var t = new ImprovedBinSearchTree();

            t.Insert(5);
            Assert.IsTrue(t.Search(5));
        }
        public void DeleteTest_CheckIfDelete()
        {
            var       t     = new ImprovedBinSearchTree();
            const int value = 5;

            t.Insert(value);
            var deleted = t.Delete(value);

            Assert.IsFalse(t.Search(value));
            Assert.IsTrue(deleted);
        }