code: private Node<T> removeMin(Node<T> h, boolean updateMin) { 
          if (h.left == null)
              return null;
  
          if (!h.left.red && (h.left.left == null || !h.left.left.red))
              h = moveRedLeft(h);
  
          h.left = removeMin(h.left, updateMin);
      	if (h.left == null && updateMin)
      		first = h;
          return balance(h);
      }
docs: delete the key-value pair with the minimum key rooted at h