剑指offer27-二叉树的镜像

    技术2026-02-08  2

    请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 4 / 2 7 / \ / 1 3 6 9 镜像输出: 4 / 7 2 / \ / 9 6 3 1 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    这个题目比较简单,思路就是依次遍历二叉树的各个节点并交换左右子树。这里复习一下遍历二叉树的三种思路:递归、栈(先序遍历)、队列(层次遍历)

    递归

    # 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 root root.left,root.right=self.mirrorTree(root.right),self.mirrorTree(root.left) return root

    辅助栈

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

    队列

    class Solution: def mirrorTree(self, root: TreeNode) -> TreeNode: if not root: return root s=[root] while len(s): t=s.pop() if t.left: s.insert(0,t.left) if t.right: s.insert(0,t.right) t.left,t.right=t.right,t.left return root
    Processed: 0.017, SQL: 9