code: private void flipColors(Node<T> h) {
          // h must have opposite color of its two children
          // assert (h != null) && (h.left != null) && (h.right != null);
          // assert (!isRed(h) &&  isRed(h.left) &&  isRed(h.right))
          //    || (isRed(h)  && !isRed(h.left) && !isRed(h.right));
          h.red = !h.red;
          h.left.red = !h.left.red;
          h.right.red = !h.right.red;
      }
docs: flip the colors of a node and its two children