问题描述
操作给定的二叉树,将其变换为源二叉树的镜像。
解题思路
我们可以总结出这两棵树的根节点相同,但它们的左、右两个子节点交换了位置。所以我们可以得出求一棵树的镜像的过程:先前序遍历这棵树的每个节点,如果遍历到的节点有子节点,就交换它的两个子节点。当交换完所有非叶节点的左、右子节点之后,就得到了树的镜像。
public class Solution {
/**
* 二叉树的构造 内部类
*/
public class TreeNode{
int val;
TreeNode left=null;
TreeNode right=null;
public TreeNode(int val) {
this.val = val;
}
}
public static void Mirror(TreeNode root) {
if (root==null){
return;
}
//交换左右节点
TreeNode temp;
temp=root.left;
root.left=root.right;
root.right=temp;
//鲁棒性考虑
if (root.left!=null) {
Mirror(root.left);
}
if (root.right!=null) {
Mirror(root.right);
}
}
}