【每日一题】LeetCode 104.二叉树的最大深度(树、深度优先搜索、广度优先搜索、二叉树)

news2024/11/16 13:30:43

【每日一题】LeetCode 104.二叉树的最大深度(树、深度优先搜索、广度优先搜索、二叉树)

题目描述

给定一个二叉树 root,我们需要计算并返回该二叉树的最大深度。二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数。

思路分析

为了解决这个问题,我们可以使用递归的方法。递归的基本思想是从根节点开始,逐层向下遍历树的每个节点,同时记录当前的深度。在递归的过程中,我们会遇到两种情况:

  1. 当前节点为 null,说明已经到达了树的末端,此时应该返回当前的深度(减去1,因为末端节点不计入深度)。
  2. 当前节点不为 null,此时我们需要分别递归地计算左子树和右子树的最大深度,然后取两者的最大值作为当前节点的最大深度。

递归的终止条件是遇到 null 节点,此时返回深度为0。

输入示例

  • 示例 1:

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

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

代码实现

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int maxDepth(TreeNode root) {
        // 调用递归函数,初始深度为1(根节点)
        return dfs(root, 1);
    }
    /**
     * 递归计算二叉树的最大深度
     * @param node 当前节点
     * @param depth 当前深度
     * @return 当前节点的最大深度
     */
    public static int dfs(TreeNode node, int depth) {
        // 如果当前节点为null,返回当前深度减去1(因为null节点不计入深度)
        if (node == null) {
            return depth - 1;
        }
        // 递归计算左子树的最大深度,并增加当前深度
        int leftDepth = dfs(node.left, depth + 1);
        // 递归计算右子树的最大深度,并增加当前深度
        int rightDepth = dfs(node.right, depth + 1);
        // 返回左子树和右子树深度的最大值
        return Math.max(leftDepth, rightDepth);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2120158.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Uni-app 开发鸿蒙 App 全攻略

一、开发前的准备工作 开发鸿蒙 App 之前,我们需要做好充分的准备工作。首先是工具的安装与配置。 Node.js 的安装:推荐使用 LTS 版本的 Node.js。可以前往 Node.js 的官方网站下载适合自己操作系统的安装包,如 Windows 用户根据自己的系统版…

OpenHarmony鸿蒙开发( Beta5.0)智能风扇设备开发实践

样例简介 智能风扇设备不仅可以接收数字管家应用下发的指令来控制风扇开启的时间,调节风扇挡位,更改风扇定时时间,而且还可以加入到数字管家的日程管理中。通过日程可以设定风扇相关的任务,使其在特定的时间段内,风扇…

【MySQL】MySQL表的操作

目录 创建表的语法创建表的示例查看表的结构进入数据库查看自己在哪个数据库查看自己所在数据库都有哪些表查看表的详细信息查看创建表时的详细信息 修改表修改表名修改表的内容插入几个数据增加一列修改一列的所有属性删除某一列修改列的名称 删除表 创建表的语法 CREATE TAB…

DFS算法专题(二)——穷举vs暴搜vs深搜vs回溯vs剪枝【OF】决策树

目录 1、决策树 2、算法实战应用【leetcode】 2.1 题一:全排列 2.2.1 算法原理 2.2.2 算法代码 2.2 题二:子集 2.2.1 算法原理【策略一】 2.2.2 算法代码【策略一】 2.2.3 算法原理【策略二,推荐】 2.2.4 算法代码【策略二&#x…

图像去噪技术:传统中值滤波与改进中值滤波算法的比较

在数字图像处理中,去噪是一个至关重要的步骤,尤其是在图像受到椒盐噪声影响时。本文将介绍一种改进的中值滤波算法,并与传统的中值滤波算法进行比较,以展示其在去除椒盐噪声方面的有效性。 实验环境 软件:MATLAB图像…

Centos如何配置阿里云的yum仓库作为yum源?

背景 Centos在国内访问官方yum源慢,可以用国内的yum源,本文以阿里云yum源为例说明。 快速命令 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.a…

宏观学习笔记:GDP分析(二)

GDP分析(一)主要是介绍GDP相关的定义以及核算逻辑,本节主要介绍GDP的分析思路。GDP分析主要是2种方法:总量分析和结构分析。 1. 总量分析 1.1 数值选择 一般情况下,分析的对象都是 官方公布的GDP当季值。 1.2 趋势规…

利用发电量和气象数据分析来判断光伏仿真系统的准确性

随着光伏产业的迅速发展,光伏仿真系统通过集成气象数据分析、发电量分析、投融资分析及损耗估算等功能,为光伏项目的全生命周期管理提供了科学依据。 光伏仿真系统集成了气象数据分析、发电量预测、投融资分析、损耗估算及光伏设计等功能。其中&#xf…

qmt量化交易策略小白学习笔记第60期【qmt编程之期权数据--基于BS模型计算欧式期权隐含波动率--内置Python】

qmt编程之获取期权数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 基于BS模型计算欧式期权隐含波动率 基于Black-Scholes-Merton模型,输入期权标的价格、期权行权价、期权现价、无风险利…

【880高数】高等数学一刷错题整理

第一章 函数、极限、连续 2024.8.11日 1. 2. 3. 4. 5. 2024.8.12日 1. 2. 3. 4. 5. 6. 7. 8. 2024.8.13日 1. 2. 3. 4. 2024.8.14日 1. 2. 3. 4. 5. 第二章 一元函数微分学及其应用 2024.8.15日 1. 2. 3. 4. 5. 6. 2024.8.16日 1. 2. 3. 4. 5. 2024.8.17日 1. 2. 3. 4…

哈希表 和 算法

1.哈希表的作用:将我们要存储的数据,通过关键字与位置的关系函数,来确定具体的位置。 2.写哈希表时常出现的问题:哈希冲突/矛盾:当多个数据满足哈希函数的映射时出现 解决的方法为: 1)开放地址…

MVC设计模式与delegate

一、MVC MVC就是Model(模型)、View(视图)、Controller(控制器) 例如上面的 excel表, 数据、数据结构就是模型Model 根据数据形成的直观的、用户能直接看见的柱形图是视图View 数据构成的表格…

ABAP JSON处理应用

1. json 转换成内表 通过上传URL获取json数据并转换为内表 json to itab关键字 METHOD get_itab_for_json.DATA : lr_client TYPE REF TO if_http_client,lv_url TYPE string,lv_content_type TYPE string VALUE application/x-www-form-urlencoded,ev_xstrin…

【python报错】ModuleNotFoundError: No module named ‘utils‘

问题 想要用python语言将A文件夹的a.py脚本引用utils文件夹b.py脚本,直接引用:from utils import XXX 导致在vscode编译器报错:ModuleNotFoundError: No module named utils 这里文件夹A和utils是同级目录【其他情况,修改后面代码…

背钻设计时要优先保证哪一项,STUB长度真的是越短越好吗

高速先生成员--王辉东 人道是: 八月十八潮,壮观天下无。 鲲鹏水击三千里,组练长驱十万夫。 红旗青盖互明末,黑沙白浪相吞屠。 人生会合古难必,此情此景那两得。 小蝶托着腮望着窗外,思绪飞到千里之外…

【鸿蒙开发从0到1 day08】

鸿蒙开发基础 一.联合类型二.枚举类型三.组件和样式1. ArkUI基本语法 四.尺寸五.字体1.字体颜色2.字体样式3.LineHeight() 设置行高 上间距文字下间距4.下划线:5.对齐方式(1)水平对齐方式(2)垂直对齐方式 6.文本缩进和文本省略号设置 六.图片1.图片的等比例缩放2.占位符3.图片填…

2024腾讯互联网AI应用专场

2024腾讯互联网AI应用专场 灵魂提问: 1、AI应用场景: 智能客服智能数据分析BI 通过AI生成的内容的点击率是人工生产的103%。 2、AI时代已经来临, 依然是这些互联网巨头领导。 现在股价低迷,是不是投资的好机会。 3、agent …

矩阵怪 - 2024全新矩阵产品,一键分发抖音,快手,视频号,B站,小红书!

1. 本方案面向谁,解决了什么问题 本方案主要面向C端客户,特别是那些在各大短视频平台(如小红书、抖音、视频号、快手、B站等)上进行内容创作和分发的个人用户、自由职业者、小型团队或企业。这些用户通常面临着在多个平台上同时发…

Python爬虫如何通过滑块验证

一:定位元素的坐标 当 Selenium 定位到元素后,如果想获取元素在页面中的具体坐标位置,可以通过 element.location 的方式来得到元素的起始坐标字典(元素的左上顶点)。然后再通过 element.size 的方式来获取该元素的宽…

Python列表浅拷贝的陷阱与破解之道

引言 在Python编程世界中,列表的拷贝操作看似简单,却常常隐藏着一些令人意想不到的陷阱,尤其是当涉及到浅拷贝时。今天,我们将深入探讨Python列表浅拷贝现象及产生原因,并提供有效的解决方案,帮助你写出更…