题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。 示例:
输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]
解题思路:这道题就很简单了,无非就是 1、判断root是不是空,如果是空,则返回null 2、如果root非空,那么:(一直递归下面两个规则)
- 把root下所有左子树的节点的值赋值给mirror下所有右子树的节点
- 把root下所有右子树的节点的值赋值给mirror下所有左子树的节点
class Solution {
public TreeNode mirrorTree(TreeNode root) {
if(root == null) return null;
TreeNode mirror = new TreeNode(root.val);
return revoteTree(root, mirror);
}
public TreeNode revoteTree(TreeNode A, TreeNode B){
B = new TreeNode(A.val);
if(A.left != null){
B.right = revoteTree(A.left, B.right);
}
if(A.right != null){
B. left = revoteTree(A.right, B.left);
}
return B;
}
}
力扣战绩: 再来看看大牛的写法:(我恨啊,没考虑到这个东西不是主函数。。。。)
class Solution {
public TreeNode mirrorTree(TreeNode root) {
if(root == null) return null;
TreeNode tmp = root.left;
root.left = mirrorTree(root.right);
root.right = mirrorTree(tmp);
return root;
}
}
力扣战绩:(哦豁,居然用的内存比我大,虽然觉得这个内存好像是乱算的,但是我的内心还是觉得暗爽哈哈哈哈)
|