我们先看一道题
题目描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树
8
/ \
10 6
/ \ / \
11 9 7 5
拿到这道题首先肯定想的就是把8的左右子树变换一下位置就可以了于是开始写代码
public static void Mirror(TreeNode root) {
TreeNode left = root.left;
root.left = root.right;
root.right = left;
}
这么写看上去毫无问题,但是检测结果我们回发现,他只交换了6和10子树没有跟着交换,结果还是发现自己年轻了,发现需要根据递归去交换于是完整代码来了:
/**
* @Description:
* @ClassName algorithm
* @Author: 王瑞文
* @Date: 2021/1/11 21:34
*/
public class Test02 {
public static void Mirror(TreeNode root) {
tranForm(root);
}
public static void tranForm(TreeNode root) {
if (root != null) {
tranForm(root.left);
tranForm(root.right);
TreeNode left = root.left;
root.left = root.right;
root.right = left;
}
}
}
当然 这是一道非常简单的算法题,小伙伴如果有更好的方法欢迎和我交流