方法:递归

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