【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博客类似,有广度优先和深度优先(与上述解法一致)算法。

四、总结

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

相关推荐
小欣加油14 小时前
leetcode56 合并区间
c++·算法·leetcode·职场和发展
lqqjuly14 小时前
前沿算法深度解析(二)
人工智能·算法·机器学习
徐小夕16 小时前
万字长文!千万级文档 RAG 知识库系统落地实践
前端·算法·github
akunkuntaimei16 小时前
2026年高考数学各省真题及答案(完整版)
算法·高考
Hello:CodeWorld17 小时前
C 风格变参 vs C++ 变参模板:核心区别与选型指南
c语言·c++·算法
8Qi818 小时前
LeetCode 516:最长回文子序列
算法·leetcode·职场和发展·动态规划
十月的皮皮19 小时前
C语言学习笔记20260606- 求月份天数三种写法
c语言·笔记·学习
youngerwang19 小时前
【从搬运工到协处理器:网卡芯片架构、算法、验证与边缘演进深度剖析】
网络·算法·架构·芯片
KaMeidebaby19 小时前
卡梅德生物技术快报|纯化重组蛋白实操详解
人工智能·python·tcp/ip·算法·机器学习
caimouse19 小时前
Reactos 第 5 章 进程与线程 — 5.8 Windows 的 APC 机制
c语言·windows