问题描述:请完成一个函数,输入一颗二叉树,该函数输出它的镜像。
问题分析: 思考的是我们如何求一颗树的镜像过程: 首先是前序遍历这个树的每一个节点。如果遍历到的节点有子节点,就交换它的两个子节点。当交换完所有的非叶子节点的左、右子节点之后,就得到了这个树的镜像。
代码如下
/**
* 二叉树的镜像 key: 递归遍历交换左右子树
*
* @param root
*/
public void Mirror(TreeNode root) {
if (root == null)
return;
if (root.left == null && root.right == null)
return;
TreeNode tmp = root.right;
root.right = root.left;
root.left = tmp;
Mirror(root.left);
Mirror(root.right);
}