一、题目
请完成一个函数,输入一个二叉树,该函数输出它的镜像。
二、解题思路
先前序遍历这棵树的每个结点,如果遍历到的结点有子结点,就交换它的两个子结点。当交换完所有非叶子结点的左右子结点之后,就得到了树的镜像。
三、解题代码
public class Test {
/**
* 二叉树的树结点
*/
public static class BinaryTreeNode {
int value;
BinaryTreeNode left;
BinaryTreeNode right;
}
/**
* 请完成一个函数,输入…个二叉树,该函数输出它的镜像
*
* @param node 二叉树的根结点
*/
public static void mirror(BinaryTreeNode node) {
// 如果当前结点不为空则进行操作
if (node != null) {
// 下面是交换结点左右两个子树
BinaryTreeNode tmp = node.left;
node.left = node.right;
node.right = tmp;
// 对结点的左右两个子树进行处理
mirror(node.left);
mirror(node.right);
}
}
}