方法:递归
二叉树从根节点每次往下一层深度就会加1。因此二叉树的深度就等于根节点这个1层加上左子树和右子树深度的最大值:max_depth = max(left_depth, right_depth) + 1,因此可以用递归分解为子问题。
时间复杂度:o(n)
空间复杂度:o(n)
class Solution {
public:
int maxDepth(TreeNode* root) {
//节点为空时返回
if (root == nullptr)
return 0;
//得到当前节点的左子树最大深度
int left_depth = maxDepth(root->left);
//得到当前节点的右子树最大深度
int right_depth = maxDepth(root->right);
//最大的深度为左子树或右子树的深度的最大值加上根节点一层
return max(left_depth, right_depth) + 1;
}
};

京公网安备 11010502036488号