【LeetCode刷题记录】104. 二叉树的最大深度

news/2024/10/18 14:24:45/

104 二叉树的最大深度

给定一个二叉树 root ,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

示例 1:
在这里插入图片描述
输入:root = [3,9,20,null,null,15,7]
输出:3

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

提示:
树中节点的数量在 [ 0 , 1 0 4 ] [0, 10^4] [0,104] 区间内。
− 100 < = N o d e . v a l < = 100 -100 <= Node.val <= 100 100<=Node.val<=100

思路

(1)深度优先遍历DFS:
按深度往下遍历,先遍历左子树计算其深度l,再遍历右子树计算其深度r,那么该二叉树的最大深度就是max(l,r)+1。左右子树的深度也是如此计算,故用递归计算左右子树的最大深度+1即可。
(2)广度优先遍历BFS:
即二叉树的层次遍历,因为计算层数就可知道深度。不同于普通的层次遍历每次只取一个队列中的一个节点,计算深度需要每次取当前队列中的所有节点进行遍历。用ans记录深度。

代码

法一:

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

法二:

// BFS
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 n = q.size();for (int i = 0; i < n; i++) {TreeNode* now = q.front();q.pop();if (now->left) {q.push(now->left);}if (now->right) {q.push(now->right);}}ans++;}return ans;}
};

http://www.ppmy.cn/news/1446990.html

相关文章

04 Docker练习赛从0开始到 docker 镜像提交

1.1 本地安装 docker 工具 这里以ubutun下安装docker为例,其他操作系统安装命令略有不同,可自行百度。(建议使用阿里源安装速度快) sudo apt install docker.io如果你本地有gpu,请继续执行如下命令以支持gpu调用: 注意: 英伟达对 docker 支持的 linux 发行版:https:/…

黄金成为对抗通胀的潮流,分享合适黄金的商业模式——消费免单

黄金成为对抗通胀的潮流&#xff0c;分享合适黄金的商业模式——消费免单 文丨微三云营销总监胡佳东&#xff0c;点击上方“关注”&#xff0c;为你分享市场商业模式电商干货。 - 引言&#xff1a;全国市场日益饱和市场正式进入“存量竞争时代”&#xff0c;在信息透明透明和…

typescript:vscode的settings配置文件配置ts语法提示

typescript&#xff1a;vscode的settings配置文件配置ts语法提示 1 找到vscode左下角的齿轮按钮 2 点击Settings&#xff08;或者快捷键ctrl,&#xff09;&#xff1a; 点击右上角的Open Settings(JSON)按钮打开配置文件&#xff1a; 或者ctrlshiftp&#xff0c;搜索settings&…

基于自注意力机制的长短期记忆神经网络(LSTM-SelfAttention)的回归预测

提示&#xff1a;MATLAB版本需要R2023a以上 基于自注意力机制的长短期记忆神经网络&#xff08;LSTM-SelfAttention&#xff09;是一种用于时序数据预测的模型。这个模型结合了两个不同的结构&#xff0c;即长短期记忆网络&#xff08;LSTM&#xff09;和自注意力机制&#xff…

洞察Agent AI智能体的未来:机遇与挑战并存

&#x1f512;文章目录&#xff1a; &#x1f6f4;什么是Agent AI智能体 &#x1f4a5;Agent AI智能体的技术组成 ☂️Agent AI智能体的应用场景 &#x1f4a3;Agent AI智能体的挑战与问题 &#x1f6b2; Agent AI智能体在未来社会中的角色和影响 ❤️对Agent AI智能体未来的期…

【Go 语言入门专栏】Go 语言的起源与发展

前言 Go 语言是当下最为流行的编程语言之一&#xff0c;大约在 2020、2021 年左右开始于国内盛行&#xff0c;许多大厂很早就将部分 Java 项目迁移到了 Go&#xff0c;足可看出其在性能方面的优越性。 相信各位都知道&#xff0c;在爬虫业务中&#xff0c;并发是一个关键的需…

SAS SQL

SAS SQL 语法SQL CREATESQL SELECTSQL SELECT with WHERE ClauseSQL UPDATESQL DELETE 语法 proc sql;select columnsfrom tablewhere columnsgroup by columns ; quit;SQL查询在proc sql语句之后&#xff0c;加上quit语句&#xff0c;用于结束SQL查询 SQL CREATE data exam…

apache DbUtils 组件核心原理与应用

Apache DbUtils 是一个 Apache 组织提供的开源 JDBC 工具类库&#xff0c;它对 JDBC 进行了简单封装&#xff0c;使得数据库操作更加简洁和安全。DbUtils 的核心组件主要包括 QueryRunner、ResultSetHandler 和 RowProcessor&#xff0c;下面将对这些组件进行介绍&#xff0c;并…