![](https://i-blog.csdnimg.cn/blog_migrate/fd0ac1918c91d8c2766a55579cf834d9.png)
一般我们使用深度优先搜索的方法,也就是比较所有到底部结点的路线的深度,取其中的最大值,这种办法我们一般用递归实现,代码如下
int maxDepth(struct TreeNode* root)
{
if(root==NULL)
return 0;
else
return fmax(maxDepth(root->left),maxDepth(root->right))+1;
}
这种代码看起来太抽象了,我们没办法弄清计算机是如何执行递归的,接下来我用画图的方式帮助理解,就以题目给出的实例为例子
![](https://i-blog.csdnimg.cn/blog_migrate/a77eb4a709add1d31887dfa77fd0483f.png)
我们可以看出,递归调用的结构也类似于二叉树,它将每一条分支的最大值返回,最后就可以得到最大深度,希望这张图可以帮助大家理解递归是如何实现解决有关二叉树的问题