🚩传送门:牛客题目

题目

请完成一个函数,输入一个二叉树,该函数输出它的镜像。

[NC]72. 二叉树的镜像 - 图1[NC]72. 二叉树的镜像 - 图2

复杂度分析

时间复杂度:[NC]72. 二叉树的镜像 - 图3,其中 [NC]72. 二叉树的镜像 - 图4 为二叉树节点的数目,时间复杂度同归并排序。我们会遍历二叉树中的
每一个节点,对每个节点而言,我们在常数时间内交换其两棵子树。

空间复杂度:[NC]72. 二叉树的镜像 - 图5,使用的空间由递归栈的深度决定,它等于当前节点在二叉树中的高度。在平均情
况下,二叉树的高度与节点个数为对数关系,即 [NC]72. 二叉树的镜像 - 图6 。而在最坏情况下,树形成链状,空间复杂度
[NC]72. 二叉树的镜像 - 图7

官方代码

  1. class Solution {
  2. public TreeNode mirrorTree(TreeNode root) {
  3. if (root == null) return null;
  4. TreeNode left = mirrorTree(root.left);
  5. TreeNode right = mirrorTree(root.right);
  6. root.left = right;
  7. root.right = left;
  8. return root;
  9. }
  10. }