问题
题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
分析
- 交换左右子树
- 递归交换左右子树的镜像
- 终止条件为当前节点为叶子节点
代码
public class Problem5 {
//采用递归
public void Mirror(TreeNode root) {
if(root == null){
return;
}
//先交换当前节点的左右子树
TreeNode temp = root.left;
root.left=root.right;
root.right=temp;
//在递归替换其左右节点
if(root.left!=null){
Mirror(root.left);
}
if (root.right!=null){
Mirror(root.right);
}
}
public static void main(String[] args) {
TreeNode head = new TreeNode(8);
TreeNode A = new TreeNode(6);
TreeNode B = new TreeNode(10);
TreeNode C = new TreeNode(5);
TreeNode D = new TreeNode(7);
TreeNode E = new TreeNode(9);
TreeNode F = new TreeNode(11);
head.left=A;
head.right=B;
A.left=C;
A.right=D;
B.left=E;
B.right=F;
head.preOrder();
System.out.println();
Problem5 problem5 = new Problem5();
problem5.Mirror(head);
head.preOrder();
}
}