> 文章列表 > 剑指 Offer 27. 二叉树的镜像

剑指 Offer 27. 二叉树的镜像

剑指 Offer 27. 二叉树的镜像

题目链接

剑指 Offer 27. 二叉树的镜像 easy

题目描述

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

例如输入:

剑指 Offer 27. 二叉树的镜像

镜像输出:

剑指 Offer 27. 二叉树的镜像

示例 1:

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

提示:

  • 0<=节点个数<=10000 <= 节点个数 <= 10000<=节点个数<=1000

解法:dfs

让当前结点 rootrootroot 的左子结点为 子树的镜像,让当前结点 rootrootroot 的右子结点为 左子树的镜像。递归的处理整个过程即可。

时间复杂度: O(n)O(n)O(n)

C++代码:

class Solution {
public:TreeNode* mirrorTree(TreeNode* root) {if(root==nullptr) return nullptr;TreeNode* left = mirrorTree(root->left);TreeNode* right = mirrorTree(root->right);root->left = right;root->right = left;return root;}
};

Python代码:

class Solution:def mirrorTree(self, root: TreeNode) -> TreeNode:if root == None:return Noneleft = self.mirrorTree(root.left)right = self.mirrorTree(root.right)root.left = rightroot.right = leftreturn root