1.题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
二叉树的镜像定义:
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5
2.解题思路
(1)镜像即左右子树交换位置,故交换左子树右子树位置
(2)交换后的左右子树的节点保持原来的顺序,故要交换左右子树自己的左右子树
(3)终止条件为 root == null || root.left == null ||root.right == null
3.代码
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public void Mirror(TreeNode root) {
if(root!=null&&(root.left!=null||root.right!=null)){
//这三句是左子树跟右子树交换
TreeNode tem=root.left;
root.left=root.right;
root.right=tem;
//然后将根节点换成root.left
Mirror(root.left);
//然后将根节点换成root.right
Mirror(root.right);
}
}
}