剑指Offer面试题:21.二叉树的镜像

一、题目
————————————————
题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
图片说明
————————————————
二、思路
————————————————
画图可以很清晰地得到思路:先前序遍历,对每个结点交换左右子结点。
————————————————
三、解决问题
————————————————
测试算例 

  1.功能测试(普通二叉树;左斜树;右斜树;一个结点)

  2.特殊测试(根结点为null;)
————————————————

package swordoffer;

/**
 * @author LQ
 * @version 1.0
 * @date 2020-04-06 14:11
 */

import java.util.ArrayList;
import java.util.LinkedList;

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

public class Solution21 {
    public static void main(String[] args) {
        Solution21 demo = new Solution21();
        System.out.println("==============================");
        demo.test1();
        System.out.println("==============================");
    }
    public void Mirror(TreeNode root) {
        if(null == root){
            return;
        }
        swap(root);
        Mirror(root.left);
        Mirror(root.right);
    }
    //左右子结点交换
    private void swap(TreeNode root){
        TreeNode temp = root.left;
        root.left = root.right;
        root.right = temp;
    }
    public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
        ArrayList<Integer>list=new ArrayList<>();
        if(root==null)
            return list;
        LinkedList<TreeNode>lay=new LinkedList<>();
        lay.add(root);
        while(!lay.isEmpty()){
            root=lay.poll();
            if(root.left!=null)
                lay.add(root.left);
            if(root.right!=null)
                lay.add(root.right);
            list.add(root.val);
        }
        return list;
    }
    //=====================测试代码=======================
    /*
     * 1.功能测试(A、B为普通二叉树;B是或者不是A树的子结构)
     * 2.特殊测试(任意一个或者两个树的根结点为null;左斜树;右斜树)
     */
    void test1() {
        TreeNode root = new TreeNode(1);
        root.right = new TreeNode(3);
        root.left = new TreeNode(2);
        System.out.println(PrintFromTopToBottom(root));
        Mirror(root);
        System.out.println(PrintFromTopToBottom(root));

    }
}

图片说明
————————————————
努力也是需要学习的,别再让你的努力,只感动了自己!愿你的每一次努力,都能为自己和别人创造价值。

Java基础 文章被收录于专栏

建立本人的Java基础技术栈积累库

全部评论

相关推荐

霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
勤奋努力的椰子这就开摆:美团骑手在美团工作没毛病
投递美团等公司10个岗位
点赞 评论 收藏
分享
联通 技术人员 总包不低于12
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务