题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5
解题思路
用二叉树层次遍历的方法 , 遍历的同时交换二叉树的左右子树。 从上往下交换。
Java中LinkedList 实现了queue接口
Object poll()方法:检索并删除该队列的头 (即出队操作)
package binarytree;
import java.util.LinkedList;
import java.util.Queue;
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class MyMirror {
public void Mirror(TreeNode root) {
Queue<TreeNode> queue = new LinkedList<TreeNode>();
if (root != null) {
queue.add(root);
}
while (!queue.isEmpty()) {
TreeNode first = queue.poll();
TreeNode left = first.left; //常规3步 交换左右子树
first.left = first.right;
first.right = left;
if (first.left != null) {
queue.add(first.left);
}
if (first.right != null) {
queue.add(first.right);
}
}
}
}