27. 二叉树的镜像
1 题目描述
请完成一个函数,输入一个二叉树,该函数输出它的镜像。
例如输入:
4
/ \
2 7
/ \ / \
1 3 6 9
镜像输出:
4
/ \
7 2
/ \ / \
9 6 3 1
2 题目分析
两种思路:
- 递归去交换左边和右边的节点
- 后序遍历进行交换
3 代码
public TreeNode mirrorTree1(TreeNode root) {
if (root == null) return null;
if (root.left == null && root.right == null) return root;
// 交换
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
if (root.left != null) mirrorTree(root.left);
if (root.right != null) mirrorTree(root.right);
return root;
}
/*
思路2:后序遍历递归方法
*/
public TreeNode mirrorTree(TreeNode root) {
if (root == null) return null;
TreeNode left = mirrorTree(root.left);
TreeNode right = mirrorTree(root.right);
root.right = left;
root.left = right;
return root;
}