递归法

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
function Mirror(root)
{
  if (!root) return root;
  let left = Mirror(root.left);
  let right = Mirror(root.right);
  root.left = right;
  root.right = left;
  return root;
}
module.exports = {
    Mirror : Mirror
};

BFS

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
function Mirror(root)
{
  if (!root) return root;
  let queue = [root];
  while (queue.length) {
    let len = queue.length;
    while (len--) {
      let node = queue.shift();
      node.left && queue.push(node.left);
      node.right && queue.push(node.right);
      // 交换左右
      let temp = node.left;
      node.left = node.right;
      node.right = temp;
    }
  }
  return root;
}
module.exports = {
    Mirror : Mirror
};