《剑指Offer》Java刷题 NO.18 二叉树的镜像

《剑指Offer》Java刷题 NO.18 二叉树的镜像(二叉树镜像、递归)

传送门:《剑指Offer刷题总目录》

时间:2020-02-27
题目:
操作给定的二叉树,将其变换为源二叉树的镜像。
在这里插入图片描述


思路:
很明显镜像二叉树是原二叉树一层一层的进行左右子树交换得来的,直到叶子结点;要注意的是,就算左右子树中有一个是空的也需要交换
递归过程:

  • 把左右子树交换,然后递归的把左子树和右子树都搞成镜像二叉树;
  • 结束条件就是当前根结点为null

Java代码:

class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode(int x) {
        val = x;
    }

    TreeNode() {

    }
}
/**
 * 操作给定的二叉树,将其变换为源二叉树的镜像。
 */
public class MirrorTree {
    public static void mirrorTree(TreeNode root){
        if(root==null) return;
        TreeNode temp=root.left;
        root.left=root.right;
        root.right=temp;//一定要交换结点才是交换了左右子树,如果仅仅是交换的val的话,底下的结构不会跟着改变
        if(root.left!=null)
            mirrorTree(root.left);
        if(root.right!=null)
            mirrorTree(root.right);
        //如果没有这两个判断语句的话,就算某个子树的根结点已经是null了,也还是会再执行一次函数
        //虽然直接return了,也尽力了压栈和出栈,比较两者的空间和时间消耗,还是判断一下吧
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值