LeetCode-剑指 Offer 27. 二叉树的镜像

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

在这里插入图片描述

示例 1:

输入:root = [4,2,7,1,3,6,9]
输出:[4,7,2,9,6,3,1]

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

思路1:

用递归处理,自下而上处理

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

思路2:

用栈来存储结点,自上而下处理

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def mirrorTree(self, root: TreeNode) -> TreeNode:
        if not root: return
        stack = [root]
        while stack:
            node = stack.pop()
            if node.left: stack.append(node.left)
            if node.right: stack.append(node.right)
            node.left, node.right = node.right, node.left
        return root

posted @ 2022-03-22 10:41  小Aer  阅读(3)  评论(0编辑  收藏  举报  来源