解答:求最大深度,可用bfs,也可用dfs,这里我用dfs写的,通过前序遍历遍历树,k为当前路径节点数量,是不是叶子节点不用判断,只要k大于max就更新max。遍历结束,max即最大深度。因为遍历了所有节点所以时间复杂度为O(n),只用了常数个变量,所以空间复杂度为O(1)。
class Solution {
public:
    /**
     * 
     * @param root TreeNode类 
     * @return int整型
     */
    int max=-1;
    int maxDepth(TreeNode* root) {
        // write code here
        if(root==NULL)return 0;
        dfs(root,1);
        return max;
    }
    void dfs(TreeNode* root,int k){
        if(root==NULL){//边界
            return;
        }
        if(k>max){
            max=k;
        }
        k++;//前序遍历
        dfs(root->left,k);
        dfs(root->right,k);
    }
};