如何实现二叉树的镜像算法?

二叉树的镜像问题是翻转一棵二叉树的左右子节点。我们可以使用递归实现二叉树的镜像算法:

public TreeNode mirrorTree(TreeNode root) {
    if (root == null) return null;
    TreeNode left = mirrorTree(root.left);
    TreeNode right = mirrorTree(root.right);
    root.left = right;
    root.right = left;
    return root;
}

算法流程:

  1. 递归翻转左右子树。当root为null时递归终止。
  2. root的左子树为右子树的翻转结果,右子树为左子树的翻转结果。
  3. 返回root。
  4. 重复1-3,最终得到整个二叉树的镜像。

时间复杂度O(n),空间复杂度O(n)。

所以,二叉树镜像的关键是:

  1. 使用递归,当节点root为null时递归终止。
  2. 将root的左右子树翻转,左子树为右子树的翻转结果,右子树为左子树的翻转结果。
  3. 重复1和2,最终得到整个二叉树的镜像。

理解二叉树镜像与递归,是算法与编程的重要内容。二叉树镜像算法这一问题包含递归、二叉树等知识与技能。