方法:递归
二叉树从根节点每次往下一层深度就会加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; } };