Binary search tree in java

I want to add a few more practical methods to a binary search tree (and practice a bit of recursion in the process). down below you will find the class BinarySearchTree with the private inner class BinaryNode.Some methods are already specified. The Improved Methods
may not be changed.

i want to add following methods

int maximumRecursive()
Finds the maximum in the entire binary search tree (using a recursive helper method) and returns it. If the tree is empty, a
java.util.NoSuchElementException is thrown out

int maximumIterative() : Finds the maximum in the binary search tree iteratively. If the tree is empty, a java.util.NoSuchElementException is thrown out

int height() : Calculates the height of the entire binary search tree. A tree without elements has height 0, a tree with exactly one element has height 1

int sum() : Calculates the sum of all numbers in the binary search tree. For an empty search tree the result should be 0

String reverseOrder() :
Returns a string representation of the tree with all elements sorted in descending order. The string should – similar to the return of toString – have the following form have: 12, 8, 2, 0, -1, .

The code

public class BinarySearchTree {

private class BinaryNode {
private int element;
private BinaryNode left;
private BinaryNode right;

private BinaryNode(int element) {
this.element = element;

private BinaryNode root;

public void insert(int newNumber) {
// special case: empty tree
if (root == null) {
root = new BinaryNode(newNumber);

BinaryNode parent = null;
BinaryNode child = root;
while (child != null) {
parent = child;
if (newNumber == child.element) {
//number already in tree
} else if (newNumber < child.element) {
child = child.left;
} else {
child = child.right;

if (newNumber < parent.element) {
parent.left = new BinaryNode(newNumber);
} else {
parent.right = new BinaryNode(newNumber);