public BTPosition<T> insertLeft(Position<T> p, T ele)
			throws InvalidPositionException {
		BTPosition<T> rp = checkPosition(p);
		Position<T> leftP = rp.getLeft();
		if (leftP != null)
			throw new InvalidPositionException("Node already has a left child");
		BTPosition<T> newNode = new BinaryTreeNode<T>(ele, null, null, rp);
		rp.setLeft(newNode);
		size++;
		return newNode;
	}