力扣104. 二叉树的最大深度

力扣104. 二叉树的最大深度

题目描述

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

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

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

输入输出样例

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

返回它的最大深度 3 。

    3
   / \
  9  20
    /  \
   15   7

解法一:使用深度优先(DFS)-迭代的方法


int maxDepth(TreeNode *root)
{
    if(!root)
    {
        return 0;
    }
    int leftMax=maxDepth(root->left);
    int rightMax=maxDepth(root->right);

    return max(leftMax,rightMax)+1;
}

解法二:使用广度优先(BFS)-队列

//根据二叉树的层序遍历的改版
int maxDepth2(TreeNode *root)
{
    if(!root)
    {
        return 0;
    }
    queue<TreeNode *>que;
    que.push(root);

    //depth 记录当前结点的深度
    int depth=0;
    while(!que.empty())
    {
        int length=que.size();
        for(int i=0;i<length;i++)
        {
            TreeNode *temp=que.front();
            que.pop();
            if(temp->left)
            {
                que.push(temp->left);
            }
            if(temp->right)
            {
                que.push(temp->right);
            }
        }
        depth+=1;
    }
    return depth;
}

你可能感兴趣的:(力扣刷题,leetcode,算法,数据结构)