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

最新修改 暂无

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

相关推荐
AI科技星1 小时前
曲率‑挠率与 $\boldsymbol{\omega/c}$ 的关系、精算验证及其物理意义
c语言·开发语言·线性代数·算法·决策树·机器学习·ai科技星
沐籽李2 小时前
HuDiff在抗体人源化项目中的工程化落地
人工智能·算法·aidd·抗体设计
依然范特东2 小时前
强化学习笔记6--IS、PPO、TD、DQN、Actor-Critic
笔记·算法
一次旅行4 小时前
RLHF全链路深度解析:Reward Model数学推导+PPO完整实战,对比GRPO轻量化方案
人工智能·算法·机器学习
Wang's Blog4 小时前
AI Agent白手起家29: Few Shot 提示词工程实战
人工智能·算法
June`4 小时前
warp shuffle指令
c++·人工智能·算法·cuda
geovindu4 小时前
go:Bit Operation Algorithm
开发语言·后端·算法·golang·位运算法
坏柠5 小时前
C语言进阶:从零实现一个可靠的环形缓冲区,吃透回绕、边界与并发
java·c语言·算法
Wang's Blog5 小时前
AI Agent白手起家31: 根据语义相似度动态选择 Few Shot 示例
人工智能·算法