题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述
二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5
|
思路
第一种思路
镜像的意思就是说将左右子树进行换位,所以直接递归就解决了。
代码
第一种思路
import java.util.LinkedList; import java.util.Queue;
public class Main { public static void main(String[] args) { TreeNode root1 = new TreeNode(8); TreeNode treeNode1 = new TreeNode(8); TreeNode treeNode2 = new TreeNode(7); TreeNode treeNode3 = new TreeNode(9); TreeNode treeNode4 = new TreeNode(2); TreeNode treeNode5 = new TreeNode(4); TreeNode treeNode6 = new TreeNode(7); root1.left =treeNode1; root1.right = treeNode2; treeNode1.left = treeNode3; treeNode1.right = treeNode4; treeNode4.left = treeNode5; treeNode4.right = treeNode6; Squeue(root1); Mirror(root1); System.out.println("之后"); Squeue(root1); } public static void Mirror(TreeNode root) { if(root==null) return; else { TreeNode left = root.left; TreeNode right = root.right; root.right = left; root.left = right; Mirror(root.left); Mirror(root.right); } } private static void Squeue(TreeNode root) { if(root!=null) { Queue<TreeNode> q = new LinkedList<>(); q.offer(root); while (!q.isEmpty()) { root = q.poll(); System.out.print(root.val+" "); if(root.left!=null) { q.offer(root.left); } if(root.right!=null) { q.offer(root.right); } } } } } class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null;
public TreeNode(int val) { this.val = val;
} }
|