剑指offer-二叉树的镜像

Posted by franki on May 3, 2021

二叉树的镜像

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

思路

递归法

1 终止条件: 当节点root为空时,即返回null

2 递推工作:

  1. 初始化temp,用于暂存root的左子节点
  2. 开启递归右子节点mirrorTree(root.right),并将返回值作为root的左子节点
  3. 开启递归左子节点mirrorTree(temp),并将返回值作为root的右子节点

代码

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {TreeNode}
 */
var mirrorTree = function(root) {
    if (root === null) {
        return null;
    }
    const temp = root.left;
    root.left = mirrorTree(root.right);
    root.right = mirrorTree(temp);
    return root;
};

复杂度分析

  • 时间复杂度: O(N)
  • 空间复杂度: O(N)