一、题目
————————————————
题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
————————————————
二、思路
————————————————
画图可以很清晰地得到思路:先前序遍历,对每个结点交换左右子结点。
————————————————
三、解决问题
————————————————
测试算例
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)); } }
————————————————
努力也是需要学习的,别再让你的努力,只感动了自己!愿你的每一次努力,都能为自己和别人创造价值。