104.二叉树的最大深度

目录

一:题目

二:思路

三:代码


一:题目

**解释:**题目说最大深度就是从根节点到最远叶子节点的最长路径上的节点数,其实就是二叉树的层数,层数也叫深度

二:思路

整棵树的最大深度 = 左子树和右子树中较深的那个 + 根节点自己这1层,通过递归不断分解到每个子树,最终汇聚出整棵树的深度。

终止条件:

如果当前节点为 NULL(空节点),代表该层不存在,所以返回

递归条件:

当前节点不为 NULL,则递归左子树和右子树,选择二者的最大值,当然递归表达式在return之前还要+1,这个1就是代表当前节点所处层

所以正如上面的递归图,root为9左孩子时,此时返回9,然后递归调用9的右孩子,此时也返回0,此时root为9的递归函数,就会选择更大值,一样大,随便选,然后加上9这层的1,像上级root为3的递归函数返回1(1+0),此时root为3的递归函数的左子树走完了,就开始递归调用root为20的函数......依次列推

三:代码

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
int maxDepth(struct TreeNode* root) {

    if(root==NULL)  
    return 0;

    return fmax(maxDepth(root->left),maxDepth(root->right))+1;
}

解释:

先计算 maxDepth(root->left) → 递归遍历整个左子树

再计算 maxDepth(root->right) → 递归遍历整个右子树

然后 fmax(左结果, 右结果) → 取两者最大值

最后 +1 → 加上当前节点层

📌 作者 shylyly

📃 首次发布 2026.8.4

❌ 最新修改 暂无

📜 声明 由于笔者水平有限,文中难免有疏漏或不妥之处,还望读者不吝赐教

相关推荐
纪念 2294 小时前
C++ 算法基础 (差分)
开发语言·c++·算法
jyOverQ7 小时前
从零学 JVM(六):垃圾回收算法详解——标记清除、标记复制与标记整理
jvm·算法
严肃小白兔9 小时前
第 06/24 期:神经网络的反向传播算法:从链式法则到梯度计算
人工智能·神经网络·算法
落羽的落羽9 小时前
【C++】C++17的主要特性
linux·服务器·开发语言·c++·算法·机器学习
【心态好不摆烂】10 小时前
数据结构基础精讲3
数据结构·算法
岑梓铭10 小时前
《考研408数据结构》第七章(B树 和 B+树)复习笔记
数据结构·笔记·b树·考研·408
漂流瓶jz11 小时前
UVA-1613 K度图的着色 题解答案代码 算法竞赛入门经典第二版
算法·深度优先·图论·贪心·aoapc·算法竞赛入门经典·uva
Pniubi12 小时前
动态规划入门 ( - 力扣509斐波那契数)
算法·动态规划
吴长建先生重名了13 小时前
GitHub Actions部署报表系统踩坑记:幂等性与限
算法