public boolean delete(E e){
		TreeNode<E> current = root;
		TreeNode<E> parent = null;
		boolean isLeft = false;
		while(current.value.compareTo(e) != 0){
			parent = current;
			if(current.left.value.compareTo(e) < 0){
				isLeft = true;
				current = current.left;
			}else{
				isLeft = false;
				current = current.right;
			}
			if(current == null)
				return false;
		}
		if(current.isLeaf()){
			if(parent == null)
				root = null;
			else if(isLeft)
				parent.left = null;
			else 
				parent.right = null;	
		} else if (current.left == null){
			if (parent == null)
				root = current.right;
			else if(isLeft)
				parent.left = current.right;
			else
				parent.right = current.right;
		} else if (current.right == null){
			if (parent == null)
				root = current.left;
			else if(isLeft)
				parent.left = current.left;
			else
				parent.right = current.left;
		} else{
			
		}
		return true;
	}