题目:给出一棵二叉树,求它的镜像,如下图:右边是二叉树是左边二叉树的镜像。
思路:本题只要遍历树中的每一个节点,然后交换每一个节点的左右子节点就可以了,因为对每一个节点来说交换左右子节点这个过程都是一模一样的,所以可以采用递归的方式来进行操作。
测试用例:
- 功能测试:普通二叉树;只有一个节点的二叉树;二叉树的所有节点都没有左子树或者右子树。
- 特殊测试:输入二叉树的根节点为空。
public class test_twenty_eight {
public void Mirror(TreeNode root){
if(root == null)return; //节点为空直接返回
if(root.left == null && root.right == 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);
}
}
}