剑指 Offer 27. 二叉树的镜像
题目链接
剑指 Offer 27. 二叉树的镜像 easy
题目描述
请完成一个函数,输入一个二叉树,该函数输出它的镜像。
例如输入:
镜像输出:
示例 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