我是靠谱客的博主 健康衬衫,最近开发中收集的这篇文章主要介绍104. 二叉树的最大深度(1.递归、2.队列,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.递归法1

比较左右子树的深度,返回深度较大值

class Solution {
public:
    int maxDepth(TreeNode* root) {
       if(root){
           return max(maxDepth(root->left),maxDepth(root->right))+1;
       }
       return 0;
    }
};

2.递归法2

借助一个变量max,每次都叶子结点都比较一下深度是否比max大

class Solution {
    private:
    void maxDepth(TreeNode* root,int &max,int cnt){
        if(root==NULL){
            if(cnt>max){
                max=cnt;
            }
            return ;
        }
        maxDepth(root->left,max,cnt+1);
        maxDepth(root->right,max,cnt+1);
    }
public:
    int maxDepth(TreeNode* root) {
        int max=0;
        maxDepth(root,max,0);
        return max;
    }
};

3.借助队列,结合层次遍历

class Solution {
public:
    int maxDepth(TreeNode* root) {
        int cnt=0;
        queue<TreeNode*>q;
        if(root)q.push(root);
        while(!q.empty()){
            int s=q.size();
            cnt++;
            while(s--){
                TreeNode*node=q.front();
                q.pop();
                if(node->left)q.push(node->left);
                if(node->right)q.push(node->right);
            }
        }
        return cnt;
    }
};

最后

以上就是健康衬衫为你收集整理的104. 二叉树的最大深度(1.递归、2.队列的全部内容,希望文章能够帮你解决104. 二叉树的最大深度(1.递归、2.队列所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部