public void DeleteNode_TryToDeleteNodeWhichIsNotExist_ReturnsRoot()
        {
            var root = GetTree();

            var d      = new DeleteNodeinA_BST();
            var result = d.DeleteNode(root, 9);

            result.Should().NotBeNull();
        }
        public void DeleteNode_TryToDeleteLeafNode_ReturnsRootWithoutTheLeaf()
        {
            var root = GetTree();

            var d      = new DeleteNodeinA_BST();
            var result = d.DeleteNode(root, 4);

            result.Should().NotBeNull();
        }
        public void DeleteNode_GivenAnullTree_ReturnsNull()
        {
            var root = (TreeNode)null;

            var d      = new DeleteNodeinA_BST();
            var result = d.DeleteNode(root, 5);

            result.Should().BeNull();
        }
        public void DeleteNode_TryToDeleteNodeWithoutRightChild_ReturnsRootWithoutTheNode()
        {
            var root = GetTree();

            root.left.right = null;

            var d      = new DeleteNodeinA_BST();
            var result = d.DeleteNode(root, 3);

            result.Should().NotBeNull();
        }