Leetcode 104. 二叉树的最大深度

【简单】力扣算法题解析LeetCode104:二叉树的最大深度 本文介绍了如何计算二叉树的最大深度。采用深度优先搜索(DFS)的递归方法,通过比较左右子树的最大深度并加1(当前节点)得到结果。该方法时间复杂度为O(n),空间复杂度为O(h),h为树高。代码简洁高效,适用于各种二叉树结构。附带Java实现和示例说明,帮助理解算法原理。 阅读详情

题目

给定一个二叉树,找出其最大深度。

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

说明: 叶子节点是指没有子节点的节点。

在这里插入图片描述

解答

本题可以使用多种方式:

  • 先序,中序,后序,层序等等的都行。
  • 不论怎么实现遍历:递归,栈,Mirros 均可。
  • 对于这些方式就不再多说了。

最简单的方式还是递归。

可以看出:

  1. null 的深度是 0。
  2. 每个结点的最大深度 = max(左子树的最大深度, 右子树的最大深度) + 1。
递归代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public int maxDepth(TreeNode root) {
        if(root == null) return 0;
        return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
    }
}
结果

在这里插入图片描述

如何制作DOS启动盘 U盘制作DOS启动盘 HP-U盘启动DOS7 详细步骤教程 Intel网卡使用软件 bootutil lanconfig eeupdate Intel网卡修改MAC地址教程 制作DOS启动盘不是一项复杂的任务,只要按照以下简单的步骤进行操作,您就可以自己动手制作一个DOS启动盘。 阅读详情

相关推荐

Oracle-OGG trail 文件大小引起的进程异常 OGG-01172

监控OGG目标端进程,其中一个进程异常,状态为 ABENDED,start repa 执行失败。进入OGG报告目录检查运行报告 2015-04-20 09:38:36 ERROR OGG-01172 Discard file (/ogg/oggrm/11.2/dirdat/repa.dsc) exceeded max bytes (2000000000). 总结处理方法,从根本上解决问题。

xdyzgjy的专栏 7956

二叉树遍历之图解Mirror算法(莫里斯算法)

我们写二叉树的遍历时,一般有两种方式,迭代和递归。然而还有一种神奇的算法,也可以作我们的二叉树递归,且空间复杂度为O(1),要知道,我们迭代和递归都是需要额外栈空间的

small_engineer的博客 2740

华为2022硬件逻辑笔试题

单选题(每题两分) 1.以下关于过程赋值的描述,不正确的是() A在非阻塞性过程赋值中,使用赋值符号“< =” B赋值操作符是“=”的过程赋值是阻塞性过程赋值 C在非阻塞性过程赋值中,对目标的赋值是非阻塞的(因为时延),但可预定在将来某个时间步发生(根据时延:如果是0时延,那么在当前时间步结束) D非阻塞性过程赋值在其后所有语句执行前执行 解:D 2.芯片的功耗和下列哪种不强相关_____________。 A资源利用率 B核电压 C组合逻辑级数 D翻转率 解:A 3.下列说

weixin_44072819的博客 1万+

二叉树的遍历(递归,迭代,Mirrors)详解

文章目录二叉树的遍历算法分为三种创建二叉树递归先序遍历中序遍历后序遍历迭代先序遍历先序走流程代码实现中序遍历举例说明流程代码实现后序遍历思路一:两个栈搞定版举例说明代码实现思路二:一个栈搞定版举例说明:代码实现Mirrors遍历Mirrors核心思想Mirrors遍历的模板代码先序遍历按照例子走流程代码实现中序遍历按照例子走流程代码实现后序遍历按照例子走流程代码实现: 二叉树的遍历算法分为三种  1. 递归  2. 迭代  3. Mirrors遍历 本文主要讲述Mirror遍历与迭代算法,递归算法很简单,不

闭上眼 待琉璃 的博客 1434

告别代码丢失!用Git+Gitee管理你的Keil5单片机项目(保姆级图文教程)

本文详细介绍了如何利用Git和Gitee高效管理Keil5单片机项目,解决嵌入式开发中的代码丢失问题。通过精准配置.gitignore文件、设计适合团队的协作流程以及搭建安全备份体系,开发者可以轻松实现版本控制,提升工作效率。特别针对Keil工程的特殊文件类型,提供了实用的过滤规则和操作技巧。

weixin_33686714的博客 470

伺服驱动器启用后对传感器线信号干扰的解决方案

在一些Arduino项目中,研究者发现,当伺服电机启动时,传感器信号会出现显著噪声。例如,在一个假肢项目中,研究者使用光电隔离器成功隔离了伺服驱动器对EMG传感器的干扰。然而,当启用伺服驱动器时,传感器线信号常常受到干扰,导致系统性能下降。传感器线信号是传感器输出的电信号,用于测量物理量,如温度、光线或位置。例如,在一些案例中,伺服驱动器的开关操作可能导致传感器信号出现尖峰或波动,特别是在模拟传感器上更为明显。描述: 使用光电隔离或其他隔离技术,分离伺服驱动器和传感器的电气路径,防止直接干扰。

有用好玩有趣的“电”知识 1466

树递归遍历和Mirrors遍历

给你二叉树的根节点 root ,返回它节点值的 前序 遍历前序遍历就是按照的顺序完成遍历,他的每一颗子树都遵循这个遍历的顺序,就称为前序遍历。

qq_46724069的博客 473

PHP+MYSQL宠物主题动态网页设计源码+数据库,大学生期末大作业,PHP课程设计

PHP+MYSQL宠物主题动态网页设计源码+数据库,大学生期末大作业,PHP课程设计提示:本文采用PHP对数据库进行操作:本文就介绍了PHP实现对MySQL数据库的增删改查操作基础内容。

899

搭梯子 - Mirrors前序遍历二叉树

搭梯子 - Mirrors前序遍历二叉树 前言一、问题描述二、解题思路及代码1.整体代码2.搭梯子3.爬梯子4.拆梯子三、总结 前言   在看到Mirrors前序遍历方法时,非常的头疼,不知所云种种,经过一番磨砺,搞清楚了,至少明白了Mirros遍历想说什么了。其实这个名字会带给人很大的误差,其核心思想是建立一个可以往回走的“梯子”,因而需要提前“搭”好往返使用的梯子,而且用完后则及时“拆掉”梯子。哈哈,是不是很懵,下面我将详细叙说一下。 提示:以下是本篇文章正文内容,下面案例可供参考 一、问题描述

weixin_42269028的博客 1626

C++ (week6、7):Linux系统编程4:网络

Linux网络:计算机网络概述、TCP协议、Socket编程、IO多路复用机制(select、epoll)、HTTP协议、进程池、线程池、大文件网络传输问题

Edward2022的博客 1429

结构函数详解

C3M系列覆盖从1 kW到60 kW功率范围,器件Rdson低、开关速度快(Eon/Eoff低),支持高温工作(结温高达175–225°C)。型号电压 (V)Rdson (mΩ, 典型@25°C)电流 (A, 连续@25°C)封装类型典型应用功率 (kW)65012022TO-247-41–106506035TO-247-35–2065060355–2012002180TO-247-310–40120016100TO-247-420–601200。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 151

二叉树mirros遍历和数组划分为k等份

1、二叉树mirros遍历,原理类似于线索树,利用空余指针来保存其后续节点。 void recoverTree(struct TreeNode* root) { /**中序mirros'遍历**/ if (root == NULL) { return; } struct TreeNode *p1 = root; struct TreeNode *p2 = NULL; ...

爱你的推理能手 809

【CloudCompare】Windows源码编译CloudCompare

本文详细介绍了在Windows环境下编译安装CloudCompare V2.12.0的过程。首先配置了PCL 1.14.1、CMake 3.30.6和QT 5.14.2开发环境,使用Visual Studio 2022工具集。然后下载源码并通过CMake进行配置,特别注意勾选PLUGIN_STANDARD_QPCL以支持PCD文件加载。最后在VS2022中编译安装,并指出Debug模式下可能遇到的VTK库后缀问题,需添加CMAKE_DEBUG_POSTFIX变量解决。整个流程涵盖了从环境搭建到最终编译成功的

yijiujiusan的博客 484

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

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

yyh520025的博客 1330

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

LeetCode第104题_二叉树的最大深度

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。叶子节点是指没有子节点的节点。

qq_40263592的博客 2211

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Leetcode 104. 二叉树的最大深度

Leetcode 104. 二叉树的最大深度1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/   本质上就是一个二叉树的遍历问题。代码我已经进行了详细的注释,理解应该没有问题,读者可以作为参考,如果看不懂(可以多看几遍),欢迎留言哦!我看到会解答一下。 2、问题解决   笔者以C++方式解决。 #include "iostream" using namespace std;

珍惜 8890

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

题目描述(难度易) 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 返回它的最大深度 3 。 链接 https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/ 思路 1、通过递归...

Jiewang的博客 351

LeetCode 104.二叉树的最大深度

目录LeetCode 104.二叉树的最大深度题目描述解题 LeetCode 104.二叉树的最大深度 题目描述 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 返回它的最大深度 3 。 解题      /** * Definition for a binary tree node. * struct TreeNode { * int va

s_Shune 2287

瑞_力扣LeetCode_104. 二叉树的最大深度

力扣LeetCode_104. 二叉树的最大深度

阿瑞——从事Java后端,喜欢研读源码、自研框架、分享经验 1228

LeetCode 104.二叉树的最大深度(DFS、BFS)

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

晴空๓ 1948

《LeetCode力扣练习》第104题 二叉树的最大深度 Java

《LeetCode力扣练习》第104题 二叉树的最大深度 Java 一、资源 题目: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回它的最大深度 3 。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/maximum-depth-of-bina

XRT_knives的博客 225

LeetCode 104二叉树的最大深度

LeetCode 104二叉树的最大深度 题目 解析 写一个递归函数,返回最大深度 代码 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) {...

UN_uomo的博客 377

(力扣)LeetCode104. 二叉树的最大深度(C语言)

【代码】(力扣)LeetCode104. 二叉树的最大深度(C语言)。拆分递归的细节,从本质认识递归

墨染 677

LeetCode 104 二叉树的最大深度

LeetCode 104 二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 返回它的最大深度 3 。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/maximum-dep...

sdm12345的博客 231

LeetCode 力扣 104. 二叉树的最大深度 maxDepth

大家觉得写还可以,可以点赞、收藏、关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录104. 二叉树的最大深度说明:示例:代码运行结果在这里插入图片描述 104. 二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20

motongxue的博客 652

Leetcode104 二叉树的最大深度 C++,Java,Python

Leetcode104 二叉树的最大深度 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/ 博主Github:https://github.com/GDUT-Rp/LeetCode 题目: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说...

Rp的博客 288

LeetCode 104. 二叉树的最大深度

LeetCode 104. 二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 由于面试中面试官基本上不会让你写递归版本的深度求解,所以使用层次 遍历求解树的最大深度 题解:层次遍历 使用队列,每次将每一层的树节点放进队列中,每次在放每一层的节点时需要将以前的节点全部取出来,保证队列里存放的是当前层的所有节点,每次操作一层的节点,所以需要记住我们操作了几次即可 。 public class max

小小鹿 151
上一篇: Leetcode 103. 二叉树的锯齿形层次遍历
下一篇: Leetcode 107. 二叉树的层次遍历 II
一纸浮萍
博客等级 码龄9年 11粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值