public void Add(int x)
        {
            NodeBT n = new NodeBT(x);

            if (Root == null)
            {
                Root = n;
                Count++;
                return;
            }
            NodeBT cur = Root;

            while (true)
            {
                if ((cur.Data < n.Data) && (cur.Right != null))
                {
                    cur = cur.Right;
                }
                else if ((cur.Data >= n.Data) && (cur.Left != null))
                {
                    cur = cur.Left;
                }
                else if ((cur.Data < n.Data) && (cur.Right == null))
                {
                    cur.Right = n;
                    return;
                }
                else
                {
                    cur.Left = n;
                    return;
                }
            }
        }
 private void InOrderPrint(NodeBT root)
 {
     if (root == null)
     {
         return;
     }
     InOrderPrint(root.Left);
     Console.WriteLine(root.Data);
     InOrderPrint(root.Right);
 }
        //Returns the data in the farthest right node
        public int GetMax(NodeBT root)
        {
            NodeBT cur = root;

            while (cur.Right != null)
            {
                cur = cur.Right;
            }
            return(cur.Data);
        }
        //Returns the data in the farthest left node
        public int GetMin(NodeBT root)
        {
            NodeBT cur = root;

            while (cur.Left != null)
            {
                cur = cur.Left;
            }
            return(cur.Data);
        }
 public void CallInOrderPrint(NodeBT root)
 {
     InOrderPrint(this.Root);
 }