图解LeetCode——剑指 Offer 27. 二叉树的镜像

一、题目

请完成一个函数,输入一个二叉树,该函数输出它的镜像,返回镜像后的根节点TreeNode

二、示例

2.1> 示例 1:

【输入】root = [4,2,7,1,3,6,9]
【输出】[4,7,2,9,6,3,1]

限制:

  • 0 <= 节点个数 <= 1000

三、解题思路

根据题目描述,我们需要将一颗二叉树以镜像的方式进行转换,然后输出这棵全新二叉树的根节点。那么既然要以镜像的方式进行树结构的变化,我们就需要首先找出这种“镜像”转换的规则是怎么样的。

下面我们以【输入】root = [4,2,7,1,3,6,9]为例,当以镜像方式转换完毕之后,那么全新的这个二叉树应该是【输出】root = [4,7,2,9,6,3,1],那么大家请见下图所示,我以图例的方式演示了整个转换的过程,即:

第1层】根节点Node(4)不用转换。
第2层】互换根节点Node(4)的左右子节点,即:Node(2) 与 Node(7) 进行互换。
第3层】那么针对Node(2)的左右子节点(Node(1)和Node(3))和Node(7)的左右子节点(Node(6)和Node(9))进行互换。

从上面的镜像转换过程中,我们可以发现一个规律,就是只针对某个节点Node的左子节点Node.left和右子节点Node.right进行互换操作即可。所以,当遍历完二叉树中所有的树节点并且执行完互换,也就完成了整个二叉树的镜像操作了。

 解题思路就如上所示,具体的代码实现,请见本文代码实现部分。

四、代码实现

class Solution {
    public TreeNode mirrorTree(TreeNode root) {
        if (root == null) return root;
        TreeNode leftNode = mirrorTree(root.left);
        TreeNode rightNode = mirrorTree(root.right);
        root.left = rightNode;
        root.right = leftNode;
        return root;
    }
}

 今天的文章内容就这些了:

写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享 。

更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值