翻转二叉树

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

  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;
    }
};
相关推荐
小poop5 小时前
轮转数组:从暴力到最优,一题掌握算法复杂度分析
数据结构·算法·leetcode
玖玥拾8 小时前
LeetCode 27 移除元素
算法·leetcode
hanlin0310 小时前
刷题笔记:力扣第704、977、209题(数组相关)
笔记·算法·leetcode
Rabitebla11 小时前
C++ 内存管理全面复习:从内存分布到 operator new/delete
java·c语言·开发语言·c++·算法·leetcode
玖玥拾11 小时前
LeetCode 58 最后一个单词的长度
算法·leetcode
hanlin0311 小时前
刷题笔记:力扣第19题-删除链表的倒数第N个结点
笔记·leetcode·链表
Tisfy12 小时前
LeetCode 3517.最小回文排列 I:排序(Python两行版) / 计数(O(n)时间+O(C)空间+字符串原地修改)
c语言·python·leetcode·字符串·排序·计数排序·回文
菜鸟的升级路12 小时前
C语言栈刷题:LeetCode 20 有效的括号完整解题笔记
c语言·笔记·leetcode
Lsir10110_12 小时前
【力扣hot100】矩阵题通关复盘
算法·leetcode·矩阵
退休倒计时12 小时前
【每日一题】LeetCode 207. 课程表 TypeScript
算法·leetcode·typescript