public TreeNode mirrorTree(TreeNode root) {
// 如果二叉树为空,直接返回null。
if (root == null) {
return null;
}
// 保存当前节点的左子树
TreeNode temp = root.left;
// 递归地对当前节点的右子树进行镜像反转,并将结果赋值给当前节点的左子树
root.left = mirrorTree(root.right);
// 递归地对之前保存的左子树进行镜像反转,并将结果赋值给当前节点的右子树
root.right = mirrorTree(temp);
// 返回当前节点
return root;
}
实现二叉树的镜像反转算法。
算法的思路是递归地对二叉树进行镜像反转。对于任意一个节点,将它的左子树和右子树进行交换,然后递归地对左子树和右子树进行镜像反转。这个过程会一直递归下去,直到叶子节点为止。
具体实现过程如下:
如果二叉树为空,直接返回null。
将当前节点的左子树保存在一个临时变量temp中。
将当前节点的左子树指向当前节点的右子树的镜像反转。
将当前节点的右子树指向临时变量temp的镜像反转。
返回当前节点。
通过这个过程,整棵二叉树就会被镜像反转,即每个节点的左右子树被交换