public void FindSecondLargest()
        {
            BinarySearchTree tree = new BinarySearchTree();
            tree.Add(new Node { Value = 10 });
            tree.Add(new Node { Value = 5 });
            tree.Add(new Node { Value = 15 });
            tree.Add(new Node { Value = 4 });
            tree.Add(new Node { Value = 13 });

            int result = tree.FindSecondLargest();

            Assert.AreEqual(13, result);
        }
        public void AddingNodes()
        {
            BinarySearchTree tree = new BinarySearchTree();
            tree.Add(new Node { Value = 10 });
            tree.Add(new Node { Value = 5 });
            tree.Add(new Node { Value = 15 });
            tree.Add(new Node { Value = 4 });
            tree.Add(new Node { Value = 13 });

            Assert.AreEqual(10, tree.Root.Value);
            Assert.AreEqual(5, tree.Root.Right.Value);
            Assert.AreEqual(15, tree.Root.Left.Value);
            Assert.AreEqual(4, tree.Root.Right.Right.Value);
            Assert.AreEqual(13, tree.Root.Left.Right.Value);
        }
 public void ThrowsNullArgumentExceptionWhenNullNodePassed()
 {
     BinarySearchTree tree = new BinarySearchTree();
     Assert.Throws(typeof(ArgumentNullException), () => tree.Add(null));
 }
 public void ThrowsExceptionWhenRootNotSet()
 {
     BinarySearchTree tree = new BinarySearchTree();
     Assert.Throws(typeof(InvalidOperationException), () => tree.FindSecondLargest());
 }