题目描述
就目前的个人感觉来说,迭代法的求解比递归简单一点,缺点就是代码写的比递归多,但是比较好理解。求最大深度,那么分为两部分
- 求左子树的最大深度
- 求右子树的最大深度
求深度加一即可,即根节点。而每一个子树的节点又会是下一个子树的根节点,因此递归的点也就出来了。其实我们最重要做i的就是把单层的逻辑怎么用递归的方式表达出来, 拿这个题来说,就是怎么把求左右子树的最大深度用递归写出来
class Solution {
public:
int getdepth(TreeNode *root)
{
// 是空节点 直接为0
if(root==nullptr)
{
return 0;
}
// 获取左子树的最大深度
int leftdepth = getdepth(root->left);
// 获取右子树的最大深度
int rightdepth = getdepth(root->right);
// 得到最大深度
int depth = max(leftdepth, rightdepth) + 1;
return depth;
}
int maxDepth(TreeNode* root) {
return getdepth(root);
}
};