美文网首页
二叉树的最大深度

二叉树的最大深度

作者: 小白学编程 | 来源:发表于2018-08-30 14:47 被阅读0次

    给定一个二叉树,找出其最大深度。

    二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

    说明: 叶子节点是指没有子节点的节点。

    示例:
    给定二叉树 [3,9,20,null,null,15,7],

    image.png

    返回它的最大深度 3 。

    思路1(dfs)

    int maxDepth(struct TreeNode* root) {
        if(root==NULL){
            return 0;
        }
        int leftDepth=maxDepth(root->left)+1;
        int rightDepth=maxDepth(root->right)+1;
        
        if(leftDepth>rightDepth){
            return leftDepth;
        }else{
            return rightDepth;
        }
    }
    

    思路2(bfs)

    采用队列,把一层节点都加进队列,之后一个个将队头删除,并且每删除一个队头,把它的左右孩子节点加进来

    class Solution {
    public:
        int maxDepth(TreeNode* root) {
             if(root == NULL){
                 return 0;
             }
                     
            queue<TreeNode*> q;
            q.push(root);
            int count=0;
            while(!q.empty()){
                count++;
                for(int i=0,n=q.size();i<n;++i){
                    TreeNode* p=q.front();
                    q.pop();
                    if(p->left!=NULL){
                        q.push(p->left);
                    }
                    if(p->right!=NULL){
                        q.push(p->right);
                    }
                }
            }
            return count;
        }
    };
    

    相关文章

      网友评论

          本文标题:二叉树的最大深度

          本文链接:https://www.haomeiwen.com/subject/mjarwftx.html