Solution 1
public TreeNode invertTree(TreeNode root) {
if (root == null) return null;
TreeNode node = new TreeNode(root.val);
node.right = invertTree(root.left);
node.left = invertTree(root.right);
return node;
}
Solution 2
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public class Solution {
public TreeNode invertTree(TreeNode root) {
// Base case: if the tree is empty or we reach a leaf node, return null
if (root == null) {
return null;
}
// Recursively invert the left and right subtrees
TreeNode left = invertTree(root.left);
TreeNode right = invertTree(root.right);
// Swap the left and right children
root.left = right;
root.right = left;
// Return the root (now with inverted children)
return root;
}
}