public void PrintInorderTraversal(BinarySearchTreeNode root)
 {
     if (root == null)
     {
         return;
     }
     PrintInorderTraversal(root.GetBinarySearchTreeNodeLeft());
     Console.Write(root.GetBinarySearchNodeData() + "->");
     PrintInorderTraversal(root.GetBinarySearchTreeNodeRight());
 }
        public BinarySearchTreeNode Insert(BinarySearchTreeNode root, int data)
        {
            if (root == null)
            {
                root = new BinarySearchTreeNode(data);
                return(root);
            }

            if (data < root.GetBinarySearchNodeData())
            {
                root.SetBinarySearchNodeLeft(Insert(root.GetBinarySearchTreeNodeLeft(), data));
            }
            else
            {
                root.SetBinarySearchNodeRight(Insert(root.GetBinarySearchTreeNodeRight(), data));
            }

            return(root);
        }
        private void _PrintNthLargestValue(BinarySearchTreeNode root, int temp, int N)
        {
            if (root == null || (temp > N))
            {
                return;
            }

            _PrintNthLargestValue(root.GetBinarySearchTreeNodeRight(), temp, N);

            temp++;

            if (temp == N)
            {
                Console.WriteLine("The  " + N +
                                  " rd/(th)largest value is " + root.GetBinarySearchNodeData());
                return;
            }


            _PrintNthLargestValue(root.GetBinarySearchTreeNodeLeft(), temp, N);
        }