27、剑指 Offer 27. 二叉树的镜像(递归求解)

27、剑指 Offer 27. 二叉树的镜像(递归求解)

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

例如输入:

     4

   /   \

  2     7

 / \   / \

1   3 6   9

扫描二维码关注公众号,回复: 15339547 查看本文章

镜像输出:

     4

   /   \

  7     2

 / \   / \

9   6 3   1

示例 1:

输入:root = [4,2,7,1,3,6,9]

输出:[4,7,2,9,6,3,1]

package com.example.lecode.Tree;

/**
 * 剑指 Offer 27. 二叉树的镜像(递归求解)
 *
 * 请完成一个函数,输入一个二叉树,该函数输出它的镜像。
 *
 * 例如输入:
 *
 *     4
 *   /  \
 *  2   7
 * / \  / \
 *1  3 6  9
 * 镜像输出:
 *
 *     4
 *   /  \
 *  7   2
 * / \  / \
 *9  6 3  1
 *
 *  
 *
 * 示例 1:
 *
 * 输入:root = [4,2,7,1,3,6,9]
 * 输出:[4,7,2,9,6,3,1]
 */
public class mirrorTree {
    public static void main(String[] args) {
        mirrorTree Solution = new mirrorTree();
        TreeNode root = new TreeNode(3);
        TreeNode node1 = new TreeNode(9);
        TreeNode node2 = new TreeNode(20);
        TreeNode node3 = new TreeNode(15);
        TreeNode node4 = new TreeNode(7);
        root.left = node1;
        root.right = node2;
        node2.left = node3;
        node2.right = node4;
        TreeNode resultRoot = Solution.mirrorTree(root);
        System.out.print("二叉树镜像结果为:");
        printTree(resultRoot);

    }
    public static class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int x) { val = x; }
    }

    public static void printTree(TreeNode root){
       if(root == null){
           return;
       }
        System.out.print(root.val + " ");
        printTree(root.left);
        printTree(root.right);
    }
    public TreeNode mirrorTree(TreeNode root) {
       if(root == null){
           return null;
       }
        TreeNode mirrorTree = new TreeNode(root.val);
        mirrorTree.left = mirrorTree(root.right);
        mirrorTree.right = mirrorTree(root.left);
        return mirrorTree;
    }
/**
 *
 *               3
 *             / \
 *            9  20
 *              /  \
 *             15   7
 */

}

猜你喜欢

转载自blog.csdn.net/logtcm4/article/details/131228444