LeetCode-热题100:104. 二叉树的最大深度

题目描述

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

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

示例 1:

在这里插入图片描述

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

示例 2:

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

提示:

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

代码及注释

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */

func maxDepth(root *TreeNode) int {
    // 如果根节点为空,返回深度0
    if root == nil {
        return 0
    }

    // 递归计算左子树和右子树的最大深度,然后取最大值并加1
    return max(maxDepth(root.Left), maxDepth(root.Right)) + 1
}

代码解释

  1. 空节点检查:

    if root == nil {
        return 0
    }
    
    • 如果当前节点 root 为空,那么它的深度为0。
  2. 递归计算最大深度:

    return max(maxDepth(root.Left), maxDepth(root.Right)) + 1
    
    • 使用递归的方法计算左子树和右子树的最大深度。
    • 最大深度是左子树和右子树的深度的最大值加1,因为要加上当前的根节点。
  3. 辅助函数:

    func max(a, b int) int {
        if a > b {
            return a
        }
        return b
    }
    
    • 这是一个辅助函数,用于返回两个整数中的最大值。

这个递归的解法的时间复杂度是 O(n),其中 n 是二叉树的节点数。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

直驱式风电机组的发电机和双馈风电机组的发电机发电机generator的区别

直驱式风电机组的发电机和双馈风电机组的发电机在结构和工作原理上有明显的区别&#xff1a; 直驱式风电机组的发电机&#xff1a; 结构简单&#xff0c;通常由永磁同步发电机构成。直接将风轮的转动与发电机的转子连接&#xff0c;无需传动系统。没有齿轮箱&#xff0c;因此减…

GPT图解:大模型是怎样构建的,书籍PDF分享

今天又来给大家推荐一本大模型方面的书籍<GPT图解:大模型是怎样构建的>本书将以生动活泼的笔触&#xff0c;将枯燥的技术细节化作轻松幽默的故事和缤纷多彩的图画&#xff0c;引领读者穿梭于不同技术的时空&#xff0c;见证自然语言处理技术的传承、演进与蜕变。 在这本…

求存款本息和(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <math.h>int main() {//初始化变量值&#xff1b;double P 1000, r1 0.015, r2 0.021, r3 0.0275, r4 0.03, r5 0.0035;int judge 0;//…

【C语言】——字符串函数的使用与模拟实现(上)

【C语言】——字符串函数 前言一、 s t r l e n strlen strlen 函数1.1、函数功能1.2、函数的使用1.3、函数的模拟实现&#xff08;1&#xff09;计数法&#xff08;2&#xff09;递归法&#xff08;3&#xff09;指针 - 指针 二、 s t r c p y strcpy strcpy 函数2.1、函数功能…

Go语言开发工具Vscode配置

Go语言开发工具Vscode配置方法分享&#xff1a; 1.下载安装vscode https://code.visualstudio.com/ 2.汉化vscode 3.vscode中安装Go语言插件 源自&#xff1a;大地老师Golang语言beego入门实战视频教程下载地址

5、LMDeploy 量化部署 LLMVLM实战(homework)

基础作业&#xff08;结营必做&#xff09; 完成以下任务&#xff0c;并将实现过程记录截图&#xff1a; 配置lmdeploy运行环境 由于环境依赖项存在torch&#xff0c;下载过程可能比较缓慢。InternStudio上提供了快速创建conda环境的方法。打开命令行终端&#xff0c;创建一…

项目实现:Boost搜索引擎

一.项目背景 当前已经有许多上市公司做了搜索引擎&#xff0c;比如说百度&#xff0c;搜狗&#xff0c;360等等&#xff0c;这些项目都是很大的项目&#xff0c;有很高的技术门槛&#xff0c;我们自己实现一个完整的搜索引擎是不可能的&#xff0c;但是我们可以写一个简单的搜…

【ARM 裸机】硬件平台简介

硬件平台采用的是正点原子的 I.MX6ULL-MINI 开发板&#xff0c;分为底板和核心板&#xff1b; 1、底板 正点原子 Mini 开发板的外形尺寸为 100mm*130mm&#xff0c;I.MX6U-Mini 开发板底板板载资源如下&#xff1a; ◆ 1 个核心板接口&#xff0c;支持 I.MX6ULL 核心板。 ◆ 1…

梯度提升树(Gradient Boosting Trees)

通过5个条件判定一件事情是否会发生&#xff0c;5个条件对这件事情是否发生的影响力不同&#xff0c;计算每个条件对这件事情发生的影响力多大&#xff0c;写一个梯度提升树&#xff08;Gradient Boosting Trees&#xff09;模型程序,最后打印5个条件分别的影响力。 示例一 梯…

RobotFramework功能自动化测试框架基础篇

概念 RobotFramework是什么&#xff1f; Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性&#xff0c;支持关键字驱动&#xff0c;可以同时测试多种类型的客户端或者接口&#xff0c;可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试…

力扣练习题(2024/4/14)

1接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2…

基于 net/http 抽象出 go 服务优雅停止的一般思路

和其他语言相比&#xff0c;Go 中有相同也有不同&#xff0c;相同的是实现思路上和其他语言没啥差异&#xff0c;不同在于 Go 采用的是 goroutine channel 的并发模型&#xff0c;与传统的进程线程相比&#xff0c;实现细节上存在差异。 本文将从实际场景和它的一般实现方式展…

蓝桥杯物联网竞赛_STM32L071KBU6_全部工程及国赛省赛真题及代码

包含stm32L071kbu6全部实验工程、源码、原理图、官方提供参考代码及国、省赛真题及代码 链接&#xff1a;https://pan.baidu.com/s/1pXnsMHE0t4RLCeluFhFpAg?pwdq497 提取码&#xff1a;q497

3D室内装潢设计 Sweet Home 3D for Mac 中文直装版

Sweet Home 3D 是一款非常棒的家装辅助设计软件&#xff0c;支持包括中文在内的16中语言&#xff0c;它能帮您通过二维的家居平面图来设计和布置您的家具,还可以用三维的视角浏览整个装修布局的全貌。是一款操作起来简单方便&#xff0c;使用起来快捷、迅速&#xff0c;拥有超高…

在Mac主机上连接Linux虚拟机

前言 最近醉心于研究Linux&#xff0c;于是在PD上安装了一个Debian Linux虚拟机&#xff0c;用来练练手。但是每次在mac和Linux之间切换很是麻烦&#xff0c;有没有一种方法&#xff0c;可以在mac终端直接连接我的虚拟机&#xff0c;这样在mac终端上就可以直接操控我的Linux虚…

Redis之路系列(1)千里之行始于足下

01 千里之行始于足下 文章内容基于redis6 安装与运行 无论你一名极客还是一名工程师&#xff0c;Redis安装我都推荐源码安装&#xff0c;请前往官方下载地址&#xff1a;http://redis.io/download 进行源码下载&#xff0c;偶数为稳定版 奇数为不稳定版。 如果你是类linux系统…

传统图机器学习的特征工程-全图

将整张图表示成为一个低维向量&#xff0c;反映全图的特征 key idea&#xff1a;Bag-of-Words&#xff08;BOW&#xff09;把图看作文章&#xff0c;把节点看作单词 Kernel mothods

【python】python汽车之家数据抓取分析可视化(代码+报告+数据)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

盲人独立出行的新里程:“盲人软件”赋能无障碍生活

作为一名资深记者&#xff0c;我始终致力于探索并分享那些以科技之力提升特殊群体生活质量的故事。最近&#xff0c;一款名为蝙蝠避障的盲人软件进入了我的视野&#xff0c;其强大的避障导航功能正悄然改变着视障人士的出行方式&#xff0c;赋予他们前所未有的独立生活能力。 …

小贴士:Windows下docker挂载目录填坑记录

为便于代码调试和维护&#xff0c;一般在生成 Docker 容器时&#xff0c;会将宿主机的目录挂载到容器里。在macOS里使用终端运行 Shell 脚本&#xff0c;调试一切正常&#xff0c;但是在 Windows 里使用 Git Bash 终端运行同样的脚本时&#xff0c;发现挂载失败。 1 问题描述 …