private T ElementAt(BinaryNode <T> n) => n == null ? default(T) : n.Element;
public RankedBinarySearchTree(BinaryNode <T> root) : base(root) { }
public void RemoveMin() { Root = RemoveMin(Root); }
public void Remove(T x) { Root = Remove(x, Root); }
public void Insert(T x) { Root = Insert(x, Root); }
public void MakeEmpty() { Root = null; }
public BinarySearchTree(BinaryNode <T> root) { Root = root; }