`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);

return;

}

BinaryNode parent = null;

BinaryNode child = root;

while (child != null) {

parent = child;

if (newNumber == child.element) {

//number already in tree

return;

} 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);

}

}

}