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

❌ 最新修改 暂无

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

相关推荐
程序员清风13 小时前
算法与数据结构入门:复杂度、数组与链表
数据结构·算法·链表
无定义_13 小时前
Codeforces Round 1124 (Div. 2)
算法
垆边人似月.15 小时前
任务混部(200 分档)
算法
言乐615 小时前
Python区分广度优先深度优先宽度优先的区别
python·算法·深度优先·广度优先·宽度优先
如意猴15 小时前
【C++】007 C/C++ 内存管理机制、malloc与new的区别及模板初阶
java·c++·算法
朝朝辞暮i15 小时前
C++ 第 32 课:main()、rclcpp::init()、spin()、shutdown()
开发语言·c++·算法
Logic10116 小时前
C语言/数据结构排序题解:三个数的最大乘积——排序后比较两种候选情况
c语言·数据结构·数组·排序·时间复杂度·算法题·负数处理
朝朝辞暮i17 小时前
C++ 第 31C 课:Subscriber 到底是什么
开发语言·c++·算法
殷色玫瑰17 小时前
C++ string类详解:常用接口、字符串操作与模拟实现
java·linux·c语言·开发语言·数据结构·c++
Evand J18 小时前
【MATLAB例程】三维RRT+APF路径规划与AOA-TDOA融合定位算法。附代码的下载链接
算法·matlab·路径规划·rrt·tdoa·apf·aoa