104. 二叉树的最大深度【 力扣(LeetCode) 】

零、LeetCode 原题

104. 二叉树的最大深度

一、题目描述

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

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

二、测试用例

示例 1:

cpp 复制代码
输入:root = [3,9,20,null,null,15,7]
输出:3

示例 2:

cpp 复制代码
输入:root = [1,null,2]
输出:2

提示:

cpp 复制代码
树中节点的数量在 [0, 104] 区间内。
-100 <= Node.val <= 100

三、解题思路

  1. 基本思路:
      深度优先和广度优先两种方式。深度优先使用递归来做,广度优先使用队列来做。【不推荐广度,设计比较复杂】
  2. 具体思路:
    • 深度优先:引入子树概念,当前树高等于最高的子树树高+1;空结点树高为 0 ;
    • 广度优先:遍历每层结点,然后计算层数;
      • 把每层结点出列,将其子结点入列,每遍历到新的一层,层数+1;

四、参考代码

时间复杂度: O ( n ) \Omicron(n) O(n)

空间复杂度: O ( h ) \Omicron(h) O(h)【h 是树高,递归最高深度就是树高】

cpp 复制代码
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left),
 * right(right) {}
 * };
 */
class Solution {
public:
    int maxDepth(TreeNode* root) {
        if (root == nullptr)
            return 0;

        return max(maxDepth(root->left), maxDepth(root->right)) + 1;
    }
};
相关推荐
煤泥做不到的!6 分钟前
挑战一个月基本掌握C++(第十一天)进阶文件,异常处理,动态内存
开发语言·c++
F-2H8 分钟前
C语言:指针4(常量指针和指针常量及动态内存分配)
java·linux·c语言·开发语言·前端·c++
axxy200037 分钟前
leetcode之hot100---24两两交换链表中的节点(C++)
c++·leetcode·链表
chenziang144 分钟前
leetcode hot100 环形链表2
算法·leetcode·链表
若亦_Royi2 小时前
C++ 的大括号的用法合集
开发语言·c++
Captain823Jack2 小时前
nlp新词发现——浅析 TF·IDF
人工智能·python·深度学习·神经网络·算法·自然语言处理
Captain823Jack3 小时前
w04_nlp大模型训练·中文分词
人工智能·python·深度学习·神经网络·算法·自然语言处理·中文分词
测试杂货铺3 小时前
Jmeter压测实战:Jmeter二次开发之自定义函数
自动化测试·软件测试·测试工具·jmeter·职场和发展·测试用例·压力测试
Aileen_0v03 小时前
【AI驱动的数据结构:包装类的艺术与科学】
linux·数据结构·人工智能·笔记·网络协议·tcp/ip·whisper
是小胡嘛3 小时前
数据结构之旅:红黑树如何驱动 Set 和 Map
数据结构·算法