目录
一:题目

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


整棵树的最大深度 = 左子树和右子树中较深的那个 + 根节点自己这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
❌ 最新修改 暂无
📜 声明 由于笔者水平有限,文中难免有疏漏或不妥之处,还望读者不吝赐教