剑指 Offer 27. 二叉树的镜像

一、题目

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

二、思路

 根据二叉树镜像的定义,考虑递归遍历(dfs)二叉树,交换每个节点的左 / 右子节点,即可生成二叉树的镜像。

三、代码

class Solution:
    def mirrorTree(self, root: TreeNode) -> TreeNode:
        if not root: return
        root.left, root.right = self.mirrorTree(root.right), self.mirrorTree(root.left)
        return root。

Python 利用平行赋值的写法(即 a,b=b,a),可省略暂存操作。其原理是先将等号右侧打包成元组 (b,a) ,再序列地分给等号左侧的 a,b序列。

四、分析

复杂度分析:
时间复杂度 O(N): 其中 N 为二叉树的节点数量,建立二叉树镜像需要遍历树的所有节点,占用 O(N)时间。
空间复杂度 O(N): 最差情况下(当二叉树退化为链表),递归时系统需使用 O(N) 大小的栈空间。

posted @ 2022-12-09 11:09  ImreW  阅读(13)  评论(0)    收藏  举报