27、剑指 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]
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
*/
}