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

❌ 最新修改 暂无

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

相关推荐
晒太羊的猫24 分钟前
hot100子串
java·算法·leetcode
小豆庄1 小时前
视频脱敏引擎的追踪难题:转场误判定、ID撞号和淡入窗口
qt·算法·目标检测·音视频·视频·敏捷流程
海清河晏1111 小时前
加油站问题
数据结构·算法·leetcode
GG.WinGel1 小时前
质数数目(蓝桥杯练习题)
java·数据结构·算法·青少年编程·蓝桥杯
艾iYYY1 小时前
进程的状态
算法
秋天的怀念_David2 小时前
算法一千零一夜 · 第十七夜 长街点灯
java·程序人生·算法
CV爱数码2 小时前
论文精读|RED-CNN:残差编解码网络,低剂量 CT 去噪的经典基线
网络·人工智能·算法·cnn·ct·重建·x-ray
JustNow_Man2 小时前
【Harness】本地文本向量化搜索解决方案--qmd
git·python·算法
敲代码的苦132 小时前
头歌 数据结构—消防资源调度
数据结构·算法
ysu_03142 小时前
【C++ 进阶之路】(二)从内联函数到类与对象:深挖内存对齐、this 指针与三大默认成员函数
开发语言·数据结构·c++·笔记·面向对象·this