private boolean recoursiveAdd(Node<T> parent, Node<T> index, Node<T> newNode) {
		if (parent == null || index == null || newNode == null)
			return false;

		// System.out.println("Current:"+index.value+" new:"+newNode.value);

		if (newNode.compareTo(index) == 0) {
			// the new node will take the place of the
			// node with the same value
			newNode.setLeft(index);
			// the right subtree of the current node
			// will be the new right subtree of the new node
			newNode.setRight(index.getRight());
			// Update the parent child with the new node
			if (index.equals(parent.getLeft()))
				parent.setLeft(newNode);
			else
				parent.setRight(newNode);
			// update the current node
			index.setRight(null);
		}
		if (newNode.compareTo(index) < 0) {
			if (index.getLeft() == null)
				index.setLeft(newNode);
			else
				return recoursiveAdd(index, index.getLeft(), newNode);
		}
		if (newNode.compareTo(index) > 0) {
			if (index.getRight() == null)
				index.setRight(newNode);
			else
				return recoursiveAdd(index, index.getRight(), newNode);
		}
		return true;
	}