104. 二叉树的最大深度

发布时间 2023-12-13 00:51:27作者: DawnTraveler

1.题目介绍

给定一个二叉树 \(root\) ,返回其最大深度。

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

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:3

示例 2:

输入:root = [1,null,2]
输出:2

提示:

  • 树中节点的数量在 \([0, 10^{4}]\) 区间内。
  • \(-100 <= Node.val <= 100\)

2.题解

2.1 方法一:深度优先搜索

思路:递归

代码

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

2.2 方法二:广度优先搜索

思路

用队列存储一层所有节点的信息,在进入下一层时,将其一一出队,检测是否有左右子树,同时使用标记变量记录层数。
若有,说明下一层存在,同时将该节点入队,作为下一层检测时的树节点;
若无,说明下一层不存在,当前层数为最大层数,退出循环。

代码

class Solution {
public:
    int maxDepth(TreeNode* root) {
        if (root == nullptr) return 0;
        queue<TreeNode*> Q;
        Q.push(root);
        int ans = 0;
        while (!Q.empty()){
            int sz = Q.size();
            while(sz > 0){
                TreeNode *temp = Q.front(); Q.pop();
                if (temp->left) Q.push(temp->left);
                if (temp->right) Q.push(temp->right);
                sz--;
            }
            ans++;
        } 
        return ans;
    }
};