题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
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); } }