翻转二叉树

时间复杂度是线性的,需要遍历每个节点。空间复杂度是线性的,最坏情况递归深度是线性的,即单链的情况。

  1. 本质是自底向上,递归到最底层,然后交换。
  2. 左子树更新为递归之后的右子树
  3. 右子树更新为递归之后的左子树
  4. 根始终保持不动
c 复制代码
class Solution {
public:
    TreeNode* invertTree(TreeNode* root) {
        if ( root == nullptr ) return nullptr;
        TreeNode *left = invertTree( root->left );
        TreeNode *right = invertTree( root->right );
        root->left = right;
        root->right = left;
        return root;
    }
};
相关推荐
文丑颜不良啊31 分钟前
LeetCode2141~2160题目解析
java·leetcode
Dream it possible!17 小时前
LeetCode 面试经典 150_多维动态规划_交错字符串(97_C++_中等)
算法·leetcode·面试·动态规划
心抵鹊17 小时前
算法之双指针系列(一)
算法·leetcode
Pniubi19 小时前
力扣560.和为k的子数组
算法·leetcode·职场和发展
Pniubi20 小时前
力扣438.找到字符串中所有字母异位词
算法·leetcode·职场和发展
文丑颜不良啊1 天前
LeetCode2081~2100题目解析
java·leetcode
文丑颜不良啊1 天前
LeetCode2061~2080题目解析
java·leetcode
文丑颜不良啊2 天前
LeetCode1941~1960题目解析
java·leetcode
文丑颜不良啊2 天前
LeetCode1961~1980题目解析
java·leetcode
文丑颜不良啊2 天前
LeetCode2001~2020题目解析
java·leetcode