剑指offer-18 二叉树的镜像 -- Java实现

题目

操作给定的二叉树,将其变换为源二叉树的镜像。

分析

思路一:

采用前序遍历的方式,递归实现,在遍历的同时交换非叶子结点的左右子结点(子树)。

在这里插入图片描述

代码采用递归实现:

递归头(递归结束的标志):遍历到叶子结点。
递归体(执行递归的条件):遍历到的结点非空。
递归内容:交换左右子结点。

时间复杂度:o(N)
空间复杂度:o(N)

代码:

/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    public void Mirror(TreeNode root) {
        //输入结点root为null
        if(root==null) return;
        //如果当前结点为叶结点则不执行镜像操作
        if(root.left==null&&root.right==null) return;
        //交换结点
        TreeNode tmp = root.left;
        root.left = root.right;
        root.right = tmp;
        //递归交换其两子树。
        if(root.left!=null) Mirror(root.left);
        if(root.right!=null) Mirror(root.right);
    }
}
发布了46 篇原创文章 · 获赞 17 · 访问量 1027

猜你喜欢

转载自blog.csdn.net/weixin_42054926/article/details/103464395
今日推荐