Invert Binary Tree

easy tree dfs

Problem

Given the root of a binary tree, invert the tree, and return its root.

One DFS does the job: at each node, swap its two child links, then recurse into both children. The order (top-down vs bottom-up) doesn't matter for correctness.

Input"4, 2, 7, 1, 3, 6, 9"
Output"4, 7, 2, 9, 6, 3, 1"

def invert_tree(node):
    if node is None:
        return None
    node.left, node.right = node.right, node.left
    invert_tree(node.left)
    invert_tree(node.right)
    return node
function invertTree(node) {
  if (!node) return null;
  const tmp = node.left;
  node.left = node.right;
  node.right = tmp;
  invertTree(node.left);
  invertTree(node.right);
  return node;
}
class Solution {
    public TreeNode invertTree(TreeNode node) {
        if (node == null) return null;
        TreeNode tmp = node.left;
        node.left = node.right;
        node.right = tmp;
        invertTree(node.left);
        invertTree(node.right);
        return node;
    }
}
TreeNode* invertTree(TreeNode* node) {
    if (!node) return nullptr;
    swap(node->left, node->right);
    invertTree(node->left);
    invertTree(node->right);
    return node;
}
Time: O(n) Space: O(h)