code: @Override
      public void delete(Key key) {
  	// TODO check whether this needs to be checked!!
  	if (!contains(key)) {
  	    return;
  	}
  
  	// if both children of root are black, set root to red
  	if (!isRed(root.getLeft()) && !isRed(root.getRight())) {
  	    root.setColor(RED);
  	}
  
  	root = delete(root, key);
  	if (!isEmpty()) {
  	    root.setParent(null);
  	    root.setColor(BLACK);
  	}
  	// assert check();
      }
docs: Removes the specified key and its associated value from this symbol table (if
  the key is in this symbol table).
  
  @param key
  the key