protected static <E extends Comparable<E>>  Node<E> rotateLeft (Node<E> n) {
		assert n != null : "n != null";
		assert !n.isLeaf && !n.right.isLeaf && n.right.color == RED : 
		"rotateLeft a BLACK right node will break the tree balance";
		
		Node<E> tempNode = n.right;
		boolean tempColor = n.color;
		n.right = tempNode.left;
		n.color = tempNode.color;
		tempNode.left = n;
		tempNode.color = tempColor;
		return tempNode;
	}