Tree

How to invert a binary tree

Tree
Invert_A_Binary_Tree
class TreeNode {
  val: number;
  left: TreeNode | null;
  right: TreeNode | null;
  constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
    this.val = val === undefined ? 0 : val;
    this.left = left === undefined ? null : left;
    this.right = right === undefined ? null : right;
  }
}

function invertTree(root: TreeNode | null): TreeNode | null {
  if (isTreeNode(root)) {
    const left = invertTree(root.left);
    root.left = invertTree(root.right);
    root.right = left;
  }
  return root;
}

function isTreeNode(root: any): root is TreeNode {
  return (
    root !== null &&
    typeof root === 'object' &&
    typeof root.val === 'number' &&
    typeof root.left === 'object' &&
    typeof root.right === 'object'
  );
}