题目描述

操作给定的二叉树,将其变换为源二叉树的镜像。

输入描述

二叉树的镜像定义:

  源二叉树 
            8
           /  \           6   10
         / \  / \         5  7 9 11
 镜像二叉树
            8
           /  \           10   6
         / \  / \         11 9 7  5

解题思路

1,交换左右子树
2,递归交换左右子树的左右子节点

代码

/** * */
package offerTest;

/** * <p> * Title:Mirror * </p> * <p> * Description: * </p> * * @author 田茂林 * @data 2017年8月20日 下午9:07:06 */
public class Mirror {
    public void Mirrors(TreeNode root) {
        if (root == null || root.left == null && root.right == null){
        //为了保证代码的严谨性,这里最好加上左右子节点不能都为null
            return;
        }
        // 交换根的左右子节点
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;
        // 递归交换根的左右子树
        if (root.left != null)
            Mirrors(root.left);
        if (root.right != null)
            Mirrors(root.right);

    }

    public static void main(String[] args) {

    }

}