038翻转二叉树

翻转二叉树

题目链接:https://leetcode.cn/problems/invert-binary-tree/description/?envType=study-plan-v2\&envId=top-100-liked

我的解答:

复制代码
public TreeNode invertTree(TreeNode root) {
    if(root==null){
        return null;
    }
    TreeNode temp=root.left;
    root.left=root.right;
    root.right=temp;
    invertTree(root.left);
    invertTree(root.right);
    return root;
}

分析:代码的时间复杂度为O(n),空间复杂度为O(n)。

看了官方题解后的解答:

复制代码
//官方题解的思路与我的解题思路相同
public TreeNode invertTree(TreeNode root) {
    if(root==null){
        return null;
    }
    TreeNode left = invertTree(root.left);
    TreeNode right = invertTree(root.right);
    root.left=right;
    root.right=left;
    return root;
}

分析:代码的时间复杂度为O(n),空间复杂度为O(n),使用的空间由递归栈的深度决定,它等于当前节点在二叉树中的高度。在平均情况下,二叉树的高度与节点个数为对数关系,即 O(logn)。而在最坏情况下,树形成链状,空间复杂度为 O(n)。

总结

  • 本题的本质还是二叉树的深度优先搜索(递归)。
相关推荐
挖井观天2 小时前
《Java数据结构》第一讲:顺序表
数据结构
炘爚4 小时前
数据结构算法总结
数据结构·python·算法
见叶之秋5 小时前
【C++】红与黑的边界:红黑树从插入到自检
数据结构·c++·算法·面试
kiracrimson6 小时前
string 容器:从 C 字符串到会自己扩容的类
开发语言·数据结构·c++·stl
木井巳7 小时前
【动态规划: 路径问题】不同路径
java·算法·leetcode·动态规划
CQU_JIAKE7 小时前
10.25【A】
数据结构·算法
晒太羊的猫8 小时前
hot100子串
java·算法·leetcode
海清河晏1119 小时前
加油站问题
数据结构·算法·leetcode
GG.WinGel9 小时前
质数数目(蓝桥杯练习题)
java·数据结构·算法·青少年编程·蓝桥杯
敲代码的苦1310 小时前
头歌 数据结构—消防资源调度
数据结构·算法