题目
题目链接
https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof/
解题思路
具体思路
递归法
所谓镜像树,就是进行左右的对称交换
我们将任务进行拆解,从局部的一个节点以及其左右节点来看
所谓镜像,就是将此单节点的左右节点进行交换
具体代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public TreeNode mirrorTree(TreeNode root) {
if (root == null) {
return null;
}
// 生成镜像树的根结点
TreeNode newTree = new TreeNode(root.val);
mirror(root, newTree);
return newTree;
}
private void mirror(TreeNode oldTree, TreeNode newTree) {
if (oldTree == null) {
return;
}
// 以旧树右节点镜像生成新树左节点
if (oldTree.right != null) {
newTree.left = new TreeNode(oldTree.right.val);
mirror(oldTree.right, newTree.left);
}
// 以旧树左节点镜像生成新树右节点
if (oldTree.left != null) {
newTree.right = new TreeNode(oldTree.left.val);
mirror(oldTree.left, newTree.right);
}
}
}