题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
1、思路分析
采用递归算法。首先判断特殊情况也即递归跳出的条件,当前root结点为空或者其左右子树均为空。接着是交换当前结点的左右结点,使用中间结点tmp进行过渡,交换完成后,进行递归调用,左右结点的调用顺序可以随意。非递归算法需要使用栈,先将根结点入栈,进行当栈不为空的循环,先弹出栈顶元素,交换该元素的左右结点,再分别将左右结点入栈。
2、代码

public class Solution {
    public void Mirror(TreeNode root) {
        if(root == null) return;
        if(root.left==null && root.right==null) return;
        TreeNode tmp = new TreeNode(-1);
        tmp = root.left;
        root.left = root.right;
        root.right = tmp;
        //Mirror(root.right);
        Mirror(root.left);
        Mirror(root.right);
    }
}