【LeetCode算法】第104题:二叉树的最大深度

目录

一、题目描述

二、初次解答

三、官方解法

四、总结


一、题目描述

二、初次解答

1. 思路: 二叉树的先序遍历。首先判断根节点是否是空,其次判断根节点是否是叶子节点,再者递归获取左子树的深度、右子树的深度,最后返回左子树、右子树的最大深度。此题与【LeetCode算法】第111题:二叉树的最小深度-CSDN博客类似。

2. 代码:

cpp 复制代码
int maxDepth(struct TreeNode* root) {
    //根节点为空
    if(!root) return 0;
    //根节点为叶子节点
    if(!(root->left) && !(root->right)) return 1;
    int leftDepth=maxDepth(root->left);     //递归左子树
    int rightDepth=maxDepth(root->right);   //递归右子树
    return leftDepth>rightDepth?leftDepth+1:rightDepth+1;   //返回左子树和右子树高度最大值
}

**3. 优点:**仅遍历一遍,时间复杂度为O(n)。

**4. 缺点:**采用递归算法,空间复杂度为O(H), H是二叉树的高度。

三、官方解法

【LeetCode算法】第111题:二叉树的最小深度-CSDN博客类似,有广度优先和深度优先(与上述解法一致)算法。

四、总结

计算二叉树的最大深度和最小深度,都可以通过二叉树的先序遍历。只不过最小深度需要额外考虑左子树为空和右子树为空这两个情况。

相关推荐
月明长歌3 分钟前
【码道初阶】【LeetCode 102】二叉树层序遍历:如何利用队列实现“一层一层切蛋糕”?
java·数据结构·算法·leetcode·职场和发展·队列
CQ_YM6 分钟前
Linux线程控制
linux·c语言·开发语言·线程
lingran__8 分钟前
C语言字符函数和字符串函数详解
c语言·开发语言
星诺算法备案14 分钟前
读懂大模型备案流程,开启技术安全应用新征程
人工智能·算法·推荐算法·备案
Loo国昌19 分钟前
大型语言模型推理范式演进:从提示工程到思维算法
人工智能·算法·语言模型·自然语言处理
代码游侠33 分钟前
学习笔记——线程控制 - 互斥与同步
linux·运维·笔记·学习·算法
yaoh.wang37 分钟前
力扣(LeetCode) 66: 加一 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·跳槽
wanderist.1 小时前
2025年蓝桥杯省赛C++大学A组
c++·算法·蓝桥杯
啊董dong1 小时前
noi-2025年12月16号作业
数据结构·c++·算法·noi
white-persist1 小时前
【攻防世界】reverse | simple-check-100 详细题解 WP
c语言·开发语言·汇编·数据结构·c++·python·算法