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

最新修改 暂无

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

相关推荐
hetao173383710 小时前
2026-08-21~23 hetao1733837 的刷题记录
c++·算法
CQU_JIAKE11 小时前
8.23【A】
算法
sprlightning11 小时前
LHDC V5 算法深度解析
算法·fft·lhdcv5·imdct·mdct·rice·fac
csdn_aspnet12 小时前
C# 第k个最小元素(K’th Smallest Element)
算法·c#·排序算法
BioRunYiXue12 小时前
RACE技术全攻略:从全长克隆到靶基因验证
java·javascript·网络·人工智能·科技·算法·eclipse
ZPC821012 小时前
joy 及sensor_msgs
算法
Three_ST12 小时前
沐神-动手学习深度学习-习题答案4.4模型选择,欠拟合,过拟合
人工智能·python·深度学习·学习·算法
CIO_Alliance12 小时前
AI深度系列(2)| CNN卷积池化感受野原理:从局部感知到全局视野
人工智能·深度学习·线性代数·算法·计算机视觉·企业ai转型·企业cio联盟
探物 AI13 小时前
机器人清理墙角蜘蛛网,背后需要哪些算法?——从视觉分割到贴墙力控
算法·机器人