请完成一个函数,输入一个二叉树,该函数输出它的镜像。
例如输入:
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]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:让遍历二叉树,每次让结果树的左节点的值等于给定树的右节点的值,右节点的值等于左节点的值。
class Solution {
public TreeNode mirrorTree(TreeNode root) {
if(root == null){
return null;
}
TreeNode res = new TreeNode(root.val);
res.left = null;
res.right = null;
getMirror(root,res);
return res;
}
public TreeNode getMirror(TreeNode root,TreeNode res){
if(root == null || (root.right == null && root.left == null)){
return root;
}
if(root.right != null){
TreeNode left = new TreeNode(root.right.val);
left.left = null;
left.right = null;
res.left = left;
}
if(root.left != null){
TreeNode right = new TreeNode(root.left.val);
right.left = null;
right.right = null;
res.right = right;
}
getMirror(root.left,res.right);
getMirror(root.right,res.left);
return res;
}
}