【Offer】[27]【二叉树的镜像】

题目描述

请完成一个函数,输入一颗二叉树,该函数输出它的镜像。

二叉树的镜像定义:源二叉树 
            8
           /  
          6   10
         /   / 
        5  7 9 11
        镜像二叉树
            8
           /  
          10   6
         /   / 
        11 9 7  5

牛客网刷题地址

思路分析

利用递归的思想:前序遍历二叉树,递归的交换左右子树。

测试用例

【效率太低,还是通过牛客网测试吧】

  1. 功能测试:普通的二叉树;二叉树的所有节点都没有左子树或者右子树;只有一个节点的二叉树。
  2. 特殊输入测试:二叉树的根节点为nullptr指针。

Java代码

public class Offer27 {
    public static void main(String[] args) {
        System.out.println("测试太麻烦了以后再弄吧");
        System.out.println("效率太低,还是通过牛客网测试吧");
        test1();
        test2();
        test3();
        
    }

    public void Mirror(TreeNode root) {
        Solution1(root);
    }

    private static void Solution1(TreeNode root) {
        if(root==null) return ;
        if(root.left==null && root.right==null) {
            return ;
        }
        TreeNode tmp = root.left;
        root.left = root.right;
        root.right = tmp;
        
        if(root.left!=null) {
            Solution1(root.left);
        }
        if(root.right!=null) {
            Solution1(root.right);
        }
    }
    private static void test1() {
    }

    private static void test2() {
    }
    private static void test3() {
    }
}

代码链接

剑指Offer代码-Java

原文地址:https://www.cnblogs.com/haoworld/p/offer27-er-cha-shu-de-jing-xiang.html