剑指Offer——二叉树的镜像。

1、题目描述

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

2、代码实现

package com.baozi.offer;

/**
 * 二叉树的镜像定义:源二叉树
 *     8
 *   /  
 *  6    10
 * /    / 
 * 5  7 9 11
 * 镜像二叉树
 *     8
 *   /  
 *  10   6
 * /   / 
 * 11 9 7  5
 *
 * @author BaoZi
 * @create 2019-07-12-15:00
 */
public class Offer15 {
    public void Mirror(TreeNode root) {
        //其实这个就是递归的交换每一个子树的左右节点
        if (root != null) {
            //1、先交换当前根节点的左右子节点的值
            TreeNode temp = root.left;
            root.left = root.right;
            root.right = temp;
            if (root.left != null) {
                //2、然后再交换当前节点的左子树的值
                Mirror(root.left);
            }
            //3、然后再交换当前节点的右子树的值
            if (root.right != null) {
                Mirror(root.right);
            }
        }
    }
}