前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 剑指Offer 面试题27. 二叉树的镜像

LeetCode 剑指Offer 面试题27. 二叉树的镜像

作者头像
手撕代码八百里
发布2020-07-28 22:12:33
2970
发布2020-07-28 22:12:33
举报
文章被收录于专栏:猿计划

文章目录

  • 一、面试题27. 二叉树的镜像
  • 二、解题
    • (一)非递归方式
    • (二)递归方式
  • 三、小郑有话说

一、面试题27. 二叉树的镜像

请完成一个函数,输入一个二叉树,该函数输出它的镜像。

例如输入:

代码语言:javascript
复制
     4
   /   \
  2     7
 / \   / \
1   3 6   9

镜像输出:

代码语言:javascript
复制
     4
   /   \
  7     2
 / \   / \
9   6 3   1

示例 1:

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

二、解题

这个题很直白的就是反转二叉树

(一)非递归方式

代码语言:javascript
复制
package tree.二叉树的镜像;


import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

/**
 * @Auther: truedei
 * @Date: 2020 /20-6-10
 * @Description: 二叉树镜像
 */
public class Solution {

    static public TreeNode mirrorTree(TreeNode root) {

        if(root==null)
            return null;

        LinkedList<TreeNode> queue = new LinkedList<>();

        queue.add(root);

        TreeNode gen = new TreeNode(root.val);

        while (!queue.isEmpty()){
			
			//交换位置
            TreeNode node = queue.pop();
            TreeNode temp = node.left;
            node.left= node.right;
            node.right = temp;

            if(node.left!=null)
                queue.add(node.left);

            if(node.right!=null)
                queue.add(node.right);


        }

        return root;
    }


    public static void main(String[] args) {
        TreeNode t1 = new TreeNode(4);
        TreeNode t2 = new TreeNode(2);
        TreeNode t3 = new TreeNode(7);
        TreeNode t4 = new TreeNode(1);
        TreeNode t5 = new TreeNode(3);
        TreeNode t6 = new TreeNode(6);
        TreeNode t7 = new TreeNode(9);


        t1.left=t2;
        t1.right=t3;

        t2.left=t4;
        t2.right=t5;

        t3.left=t6;
        t3.right=t7;

        TreeNode treeNode = mirrorTree(t1);
     

    }





}

class TreeNode {
    int val;//每个节点存放的数据
    TreeNode left;//左节点
    TreeNode right;//右节点
    TreeNode(int x) { val = x; }
}

(二)递归方式

代码语言:javascript
复制
 public TreeNode mirrorTree(TreeNode root) {

        //根节点为null时,返回null
        if(root==null)
            return null;

        //当只有根节点时,直接返回
        if(root!=null && root.left==null && root.right==null)
            return root;

        //交换位置
        TreeNode temp = root.left;
        root.left=root.right;
        root.right=temp;


        if(root.left!=null)
            mirrorTree(root.left);

        if(root.right!=null)
            mirrorTree(root.right);

        return root;
    }

三、小郑有话说

如果对你有帮助,可以分享给你身边的朋友。 水平有限,难免会有疏漏或者书写不合理的地方,欢迎交流讨论。 作者:TrueDei

如果喜欢我的文章,还没看够可以关注我,我会用心写好每一篇文章。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、面试题27. 二叉树的镜像
  • 二、解题
    • (一)非递归方式
      • (二)递归方式
      • 三、小郑有话说
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档