![f23d1c48d122e127b58cf2a9af22af9a.png](https://i-blog.csdnimg.cn/blog_migrate/1638b4da2b3ac18561e83158a1e5a2ed.png)
题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
两个解法以及用例:
//方法一
//public class Solution03 {
// public static void main(String[] args) {
// TreeNode t1 = new TreeNode(8);
// TreeNode t2 = new TreeNode(6);
// TreeNode t3 = new TreeNode(10);
// TreeNode t4 = new TreeNode(5);
// TreeNode t5 = new TreeNode(7);
// TreeNode t6 = new TreeNode(9);
// TreeNode t7 = new TreeNode(11);
// t1.left=t2;
// t1.right=t3;
// t2.left=t4;
// t2.right=t5;
// t3.left=t6;
// t3.right=t7;
// Mirror(t1);
// System.out.println(t1.val);
// System.out.println(t1.left.val);
// System.out.println(t1.right.val);
// System.out.println(t2.left.val);
// System.out.println(t2.right.val);
// System.out.println(t3.left.val);
// System.out.println(t3.right.val);
//
//
// }
// public static void Mirror(TreeNode root){
// TreeNode temp;
// if(root!=null){
// temp=root.left;
// root.left=root.right;
// root.right=temp;
// }
// Mirror(root.left);
// Mirror(root.right);
// }
//}
##方法二
public class Solution03 {
public static void Mirror(TreeNode root) {
reverseTree(root);
}
private static void reverseTree(TreeNode root){
//为空则结束
if(root == null){
return;
}
//假设root两边的子树自己都已经翻转成功了,那么只需要再将左右子树互换一下就成功了
//交换root的左右子树
swap(root);
//左右子树翻转自己去处理就行了,我们规定每个子树的root都跟最终的root处理方式一样即可
reverseTree(root.left);
reverseTree(root.right);
}
private static void swap(TreeNode root){
TreeNode node = null;
node = root.left;
root.left = root.right;
root.right = node;
}
public static void main(String[] args) {
TreeNode t1 = new TreeNode(8);
TreeNode t2 = new TreeNode(6);
TreeNode t3 = new TreeNode(10);
TreeNode t4 = new TreeNode(5);
TreeNode t5 = new TreeNode(7);
TreeNode t6 = new TreeNode(9);
TreeNode t7 = new TreeNode(11);
t1.left=t2;
t1.right=t3;
t2.left=t4;
t2.right=t5;
t3.left=t6;
t3.right=t7;
Mirror(t1);
System.out.println(t1.val);
System.out.println(t1.left.val);
System.out.println(t1.right.val);
System.out.println(t2.left.val);
System.out.println(t2.right.val);
System.out.println(t3.left.val);
System.out.println(t3.right.val);
}
}