function serializeVTree(vTree) {
  let output = '';

  if (!vTree) {
    return output;
  }

  const { childNodes, nodeType, nodeName: tag, nodeValue, attributes } = vTree;

  // Document fragment.
  if (nodeType === 11) {
    for (let i = 0; i < childNodes.length; i++) {
      output += serializeVTree(childNodes[i]);
    }
  }
  // Empty element.
  else if (!(childNodes.length) && nodeType === 1) {
    output += `<${tag}${serializeAttributes(attributes)}></${tag}>`;
  }
  // Text Nodes.
  else if (nodeType === 3) {
    output += nodeValue;
  }
  // Presentational DOM Node.
  else if (childNodes.length) {
    const children = childNodes.map(childNode =>
      `${serializeVTree(childNode)}`
    ).join('');

    output += `<${tag}${serializeAttributes(attributes)}>${children}</${tag}>`;
  }

  return output;
}
serializeVTree

Takes in a diffHTML VTree object and turns it into a string of HTML.

@param {VTree=} vTree
@return {String}