剑指 Offer(第2版)面试题 27:二叉树的镜像
- 剑指 Offer(第2版)面试题 27:二叉树的镜像
- 解法1:递归
剑指 Offer(第2版)面试题 27:二叉树的镜像
题目来源:38. 二叉树的镜像
解法1:递归
我们可以发现镜像后的树就是将原树的所有节点的左右儿子互换。
所以我们递归遍历原树的所有节点,将每个节点的左右儿子互换即可。
代码 1:自底向上互换
class Solution
{
public:void mirror(TreeNode *root){if (root == nullptr)return;mirror(root->left);mirror(root->right);// swap(root->left, root->right)TreeNode *temp = root->left;root->left = root->right;root->right = temp;}
};
代码 2:自顶向下互换
class Solution
{
public:void mirror(TreeNode *root){if (root == nullptr)return;// swap(root->left, root->right)TreeNode *temp = root->left;root->left = root->right;root->right = temp;mirror(root->left);mirror(root->right);}
};
复杂度分析:
时间复杂度:O(n),其中 n 是二叉树的节点个数。原树中每个节点仅被遍历一次。
空间复杂度:O(depth),其中 depth 是二叉树的深度。