LeetCode 226
https://leetcode.cn/problems/invert-binary-tree/description/
难度:简单
高频面试题汇总:https://www.yuweihung.com/posts/2025/lc-hot/
递归调用 invertTree(root.left),获取到左子树翻转后的结果 left。
递归调用 invertTree(root.right),获取到右子树翻转后的结果 right。
交换左右儿子,即更新 root.left 为 right,更新 root.right 为 left。
返回 root。
递归边界:如果 root 是空节点,返回空。
时间复杂度:O(n),其中 n 为二叉树的节点个数。
空间复杂度:O(n)。最坏情况下,二叉树退化成一条链,递归需要 O(n) 的栈空间。
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if (root == nullptr) {
return nullptr;
}
auto left = invertTree(root->left); // 翻转左子树
auto right = invertTree(root->right); // 翻转右子树
root->left = right; // 交换左右儿子
root->right = left;
return root;
}
};