private STNode<Key, Value> floor(STNode<Key, Value> x, Key key)
	{
		if (x == null)
			return null;

		int cmp = key.compareTo(x.key);
		if (cmp == 0)
			return x;
		else if (cmp < 0) // floor is in the left subtree
			return floor(x.left, key);

		STNode<Key, Value> t = floor(x.right, key); // floor might be in the
													// right
													// subtree
		if (t != null)
			return t;
		else
			return x; // floor turned out to be x itself
	}