【题解】二叉树的最大深度

二叉树的最大深度

题目链接:二叉树的最大深度

解题思路1:递归

对于本层而言,深度是左子树和右子树的深度最大值加一,树的问题我们很容易想到用递归解决,因为树再往下分左右子树还是树,此处我们也用递归来解决

首先明确递归的结束条件是该root为空,就不再计入整体树的深度,返回0;

其次我们在每一层需要完成的事情是得出左右子树深度的较大值,再加一,这就是当前深度

代码如下:

    int maxDepth(TreeNode* root) {
        if (root == nullptr) return 0;
        return max(maxDepth(root->left), maxDepth(root->right)) + 1;
    }

解题思路2:借助层次遍历来统计层数

层次遍历所经过的层数刚好对应树的深度,我们借助层次遍历的思路来统计树的深度

代码如下:

    int maxDepth(TreeNode* root) {
        if(root == nullptr) return 0;
        int res = 0;//记录深度
        queue<TreeNode*> q;
        q.push(root);
        while(!q.empty()){
            int n = q.size();
            for(int i=0; i<n; ++i){
                TreeNode* cur = q.front();
                q.pop();
                if(cur->left != nullptr) q.push(cur->left);
                if(cur->right != nullptr) q.push(cur->right);
            }
            res++;//深度加一
        }
        return res;
    }

你可能感兴趣的:(题目练习,算法,数据结构)