完整代码地址
题目
操作给定的二叉树,将其变换为源二叉树的镜像。
思路
求一棵树的镜像的过程:先前序遍历这棵树的每个节点,如果遍历到的节点有子节点,就交换它的两个子节点。当交换完所有的左右子节点之后,就得到了树的镜像。
代码
/**
* 操作给定的二叉树,将其变换为源二叉树的镜像。
* 二叉树的镜像定义:
* 源二叉树:
* 8
* / \
* 6 10
* / \ / \
* 5 7 9 11
*
* 镜像二叉树:
* 8
* / \
* 10 6
* / \ / \
* 11 9 7 5
*
* @author peige
*/
public class _27_MirrorOfBinaryTree {
public static class TreeNode {
public int val = 0;
public TreeNode left = null;
public TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public void Mirror(TreeNode root) {
if(root == null)
return;
TreeNode tmp = root.left;
root.left = root.right;
root.right = tmp;
Mirror(root.left);
Mirror(root.right);
}
}
测试
/**
* 这个测试有点麻烦
* 直接用脑袋测试了
*
* 功能测试:
* 1.普通二叉树
*
* 边界测试:
* 1.二叉树的节点都没有左子树
* 2.二叉树的节点都没有右子树
* 3.只有一个节点的二叉树
*
* 极端测试:
* 1.二叉树的根节点为null
*
* @author peige
*/
public class _27_Test {
public static void main(String[] args) {
}
}