故事背景
想象你有一棵圣诞树,但这棵树长得不太对称。现在,我们要把这棵树变成它的镜像,就像你在镜子中看到的那样。也就是说,树的左边和右边要互换位置。
我们的树
我们的树就像一个有很多层的圣诞树,每一层都有一个数字。例如:
源二叉树:
8
/ \
6 10
/ \ / \
5 7 9 11
镜像二叉树:
8
/ \
10 6
/ \ / \
11 9 7 5
我们的目标
我们的目标是把这棵圣诞树变成它的镜像,也就是把树的左边和右边互换位置。
如何实现
让我们用一个故事来说明这个过程:
- 互换树的左右子树:对于树中的每一个节点,我们要把它的左子树和右子树交换位置。
- 递归处理子树:对于每个子树,我们也需要做同样的事情,直到树的所有节点都被处理完毕。
代码解释
让我们看看具体的代码实现:
class TreeNode {
int val;
TreeNode left, right;
TreeNode(int x) {
val = x;
}
}
public class MirrorTreeTransformer {
// 变换为镜像的方法
public TreeNode mirrorTree(TreeNode root) {
if (root == null) {
return null;
}
// 互换当前节点的左右子树
TreeNode temp = root.left;
root.left = root.right;
root.right = temp;
// 递归处理左子树
mirrorTree(root.left);
// 递归处理右子树
mirrorTree(root.right);
return root;
}
}
详细的解释
- 检查是否有节点:
- 如果树为空(没有节点),就不需要做任何事情。
- 互换左右子树:
- 把当前节点的左子树和右子树互换位置。
- 递归处理子树:
- 对于每个子树,我们也需要做同样的事情,直到所有的节点都被处理完毕。
如果这篇文章对你有帮助,请点个免费的赞👍,让它能够帮助更多的人。

京公网安备 11010502036488号