题目
请完成一个函数,输入一个二叉树,该函数输出它的镜像。
思路
(1)交换根节点的左右子树
(2)分别交换原左、右子树的根节点的左右子节点。
代码(递归)
public class MirrorofBinaryTree {
public static void mirrortree(BinaryTreeNode root) {
if(root==null) {return;}
if(root.left==null && root.right==null) {return;}
//交换当前节点的左右子节点
BinaryTreeNode temp=root.left;
root.left=root.right;
root.right=temp;
//左、右边子树递归
mirrortree(root.left);
mirrortree(root.right);
}
、 //postprint运用后遍历的方法打印出二叉树结构
public static void postprint(BinaryTreeNode head) {
if (head==null) {return;}
postprint(head.left);
postprint(head.right);
System.out.print(head.val+" ");
}
public static void main(String[] args) {
BinaryTreeNode root1 = new BinaryTreeNode(8);
BinaryTreeNode root3 = new BinaryTreeNode(8);
BinaryTreeNode root4 = new BinaryTreeNode(2);
BinaryTreeNode node1 = new BinaryTreeNode(7);
BinaryTreeNode node2 = new BinaryTreeNode(9);
BinaryTreeNode node3 = new BinaryTreeNode(4);
BinaryTreeNode node4 = new BinaryTreeNode(7);
root1.left=root3;
root1.right=node1;
root3.left=node2;
root3.right=root4;
root4.left=node3;
root4.right=node4;
mirrortree(root1);
postprint(root1);
}
}