示例#1
0
        public void CheckIfBST()
        {
            CheckIfBST    chk        = new CheckIfBST();
            BSTNode <int> binaryTree = TestDataForBST.CreateBinaryTree();
            BSTNode <int> nonBST     = TestDataForBST.CreateNonBST();

            Assert.IsTrue(chk.CheckBST(binaryTree));
            Assert.IsTrue(chk.CheckBSTEfficiently(binaryTree));
            Assert.IsTrue(chk.CheckBSTUsingInorder(binaryTree));
            Assert.IsFalse(chk.CheckBST(nonBST));
            Assert.IsFalse(chk.CheckBSTEfficiently(nonBST));
            Assert.IsFalse(chk.CheckBSTUsingInorder(nonBST));
            //              6
            //             / \
            //            2   8
            //           / \ 
            //          1   9

            BSTNode <int> root = new BSTNode <int>(6);

            BSTNode <int> right = new BSTNode <int>(8);

            root.Right = right;
            BSTNode <int> left      = new BSTNode <int>(2);
            BSTNode <int> leftLeft  = new BSTNode <int>(1);
            BSTNode <int> leftRight = new BSTNode <int>(9);

            root.Left       = left;
            root.Left.Left  = leftLeft;
            root.Left.Right = leftRight;
            Assert.IsFalse(chk.CheckBST(root));
            Assert.IsFalse(chk.CheckBSTEfficiently(root));
            Assert.IsFalse(chk.CheckBSTUsingInorder(root));
        }
示例#2
0
        public void DeleteNodeTest()
        {
            //              7
            //             / \
            //            4   9
            //           / \ / \
            //          2  5 8  10
            var expectedOutput = "Error!!";

            using (StringWriter sw = new StringWriter())
            {
                Console.SetOut(sw);

                BSTNode <int> binaryTree = TestDataForBST.CreateBinaryTree();
                DeleteANode   d          = new DeleteANode();
                binaryTree = d.DeleteNode(binaryTree, new BSTNode <int>(12));
                Assert.AreEqual <string>(expectedOutput, sw.ToString());

                binaryTree = d.DeleteNode(binaryTree, new BSTNode <int>(2));

                Assert.IsNull(binaryTree.Left.Left);

                InsertANode i = new InsertANode();
                binaryTree = i.InsertANodeInBST(binaryTree, new BSTNode <int>(2));
                binaryTree = i.InsertANodeInBST(binaryTree, new BSTNode <int>(1));

                binaryTree = d.DeleteNode(binaryTree, new BSTNode <int>(2));
                Assert.AreEqual(binaryTree.Left.Left.Data, 1);

                binaryTree = d.DeleteNode(binaryTree, new BSTNode <int>(9));
                Assert.AreEqual(binaryTree.Right.Data, 8);
                Assert.AreEqual(binaryTree.Right.Right.Data, 10);
            }
        }
示例#3
0
        public void FindMaxNode()
        {
            BSTNode <int>      binaryTree         = TestDataForBST.CreateBinaryTree();
            FindAnElementInBST findAnElementInBST = new FindAnElementInBST();
            int min = findAnElementInBST.FindMaximum(binaryTree).Data;

            Assert.AreEqual(min, 10);

            Assert.AreEqual(findAnElementInBST.FindMaximumIteratively(binaryTree).Data, 10);
        }
示例#4
0
        public void FindNode()
        {
            BSTNode <int> binaryTree = TestDataForBST.CreateBinaryTree();

            FindAnElementInBST findAnElementInBST = new FindAnElementInBST();

            Assert.AreEqual(findAnElementInBST.FindANode(binaryTree, new BSTNode <int>(5)).Data, new BSTNode <int>(5).Data);

            Assert.AreEqual(findAnElementInBST.FindANodeIteratively(binaryTree, new BSTNode <int>(5)).Data, new BSTNode <int>(5).Data);
        }
示例#5
0
        public void InsertNodeTest()
        {
            var expectedOutput = "Node Inserted Successfully";

            using (StringWriter sw = new StringWriter())
            {
                Console.SetOut(sw);

                BSTNode <int> binaryTree = TestDataForBST.CreateBinaryTree();
                InsertANode   i          = new InsertANode();
                binaryTree = i.InsertANodeInBST(binaryTree, new BSTNode <int>(12));
                Assert.AreEqual <string>(expectedOutput, sw.ToString());

                FindAnElementInBST findNode = new FindAnElementInBST();

                Assert.AreEqual(findNode.FindMaximum(binaryTree).Data, 12);

                Assert.IsNull(findNode.FindANode(binaryTree, new BSTNode <int>(12).Left));
                Assert.IsNull(findNode.FindANode(binaryTree, new BSTNode <int>(12).Right));
            }
        }