java数据结构与算法刷题-----LeetCode543. 二叉树的直径

Java实现 LeetCode 543. 二叉树的直径(遍历树) 543. 二叉树的直径 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 示例 : 给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 注意:两结点之间的路径长度是以它们之间边的数... 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

文章目录

在这里插入图片描述

解题思路
  1. 采用深度优先遍历,从最底下的结点开始,计算每个结点的左子树和右子树高度
  2. 此时有两种选择
  1. 以当前结点为中心,连通左子树和右子树,获取路径长度
  2. 继续向上走,选择左右子树路径长的一条,加上自己,作为父结点的一棵子树,继续遍历
  1. 以上两种选择,我们都做,并且每次都保存最大值max
代码

在这里插入图片描述

/**
 * 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 {
    int max = Integer.MIN_VALUE;//保存最长路径
    public int diameterOfBinaryTree(TreeNode root) {
        dfs(root);//深度优先
        return max;
    }
    public int dfs(TreeNode root) {
        if(root == null) return 0;
        int leftPath = dfs(root.left);//获取左子树路径长度
        int rightPath = dfs(root.right);//获取右子树路径长度
        //通过当前root连通左子树和右子树的路径长度为leftPath+rightPath
        max = Math.max(max,leftPath+rightPath);//如果连通后更长就更新max
        //然后继续遍历,放弃以当前结点连通左右子树
        return Math.max(leftPath,rightPath)+1;//返回当前结点更长的路径长度
    }
}
Leetcode Top100题目和答案(Java完整版 面试必备) 最近忙着准备春招,复习完这个又复习那个。不过还是忙里偷闲,把剑指Offer这66道题目重新刷了一遍,收获还是很大的,下面贴出答案,又不懂的可以给我留言,博主会及时解答。 我的github 准备把春招复习的知识都整理到github上,一边是自己做个总结,一边也能供大家参考 ——leetcode数据库 19道题 ——剑指Offer 66道题 以下摘自leetcode Top100精选题目 文章目录1.... 阅读详情

相关推荐

LeetCode 543. 二叉树的直径 详细技术解析

本文详细解析了LeetCode 543题"二叉树的直径"的解题思路。关键点在于理解直径定义为最长路径的边数而非节点数,通过后序遍历计算每个节点的左右子树深度之和并更新全局最大值。文章提供了完整的Python代码实现,包含注释和边界处理,时间复杂度为O(n)。特别强调了常见误区,如混淆边数与节点数、忽略非根路径等,并通过多个测试案例验证算法正确性。面试中需重点掌握后序遍历的应用和全局变量的使用技巧。

网络工程师|十多年企业级运维实战|精通 ‌BGP、OSPF、VLAN、SDN、MPLS、ACL、NetFlow、SNMP、 414

【leetcode刷题】27.二叉树的直径——Java版

二叉树即将结束,之后会有总结。

公号:一条coding 1万+

Doris存储层设计介绍2——数据写入及删除流程

Doris存储层设计介绍2——数据写入及删除流程

爱吃辣条的博客 4592

【LeetCode 热题 100】543. 二叉树的直径——DFS

Problem:题目:给你一棵二叉树的根节点,返回该树的 直径。二叉树的 直径 是指树中任意两个节点之间最长路径的 长度。这条路径可能经过也可能不经过根节点 root。两节点之间路径的 长度 由它们之间边数表示。

最短的捷径就是绕远路,绕远路才是我的最短捷径。 2182

ADS 2024 Circuit Envelope 仿真:3步配置调制源,分析5G NR EVM与ACPR

本文详细介绍了ADS 2024 Circuit Envelope仿真技术在5G NR调制源配置与关键指标分析中的应用。通过3步配置调制源,工程师可以高效评估EVM与ACPR等关键指标,特别适用于功放设计中的非线性效应诊断。文章还提供了优化仿真设置和精确提取EVM、ACPR的实用方法,助力5G射频前端设计。

weixin_28559803的博客 385

RK3588多路MIPI摄像头采集与WiFi低延迟传输实战指南

本文详细介绍了基于RK3588平台实现多路MIPI摄像头同步采集并通过WiFi进行低延迟传输的完整实战方案。文章深入剖析了从V4L2驱动配置、多线程采集、环形缓冲区设计到UDP网络传输优化的核心技术,旨在帮助开发者在工业检测、智能安防等场景下构建高并发、高实时性的视频流系统,实现端到端延迟控制在100毫秒以内的目标。

tensor9flow的博客 788

力扣刷题之543题-二叉树的直径

本文介绍了解决二叉树直径问题的核心思路。关键点在于理解最长路径可能不经过根节点,而是以某个节点为"拐点",通过其左右子树的最深路径组成。文章提供了两种递归解法:一种基于节点数计算高度(depth(null)=0),另一种直接计算边数(depth(null)=-1)。重点分析了递归函数返回值的含义,解释了为什么leftDepth + rightDepth能正确计算路径长度。推荐使用显式边数的写法(depth(null)=-1)以增强代码可读性。通过示例详细说明了递归过程,帮助读者掌握这一经

2401_87778289的博客 1106

作为一名爬虫人如何实现千万级数据爬取?

爬虫门槛不高,高就高在往后余生的每一次实操都随时会让你崩溃!Bro

吴秋霖的博客 1万+

【Leetcode:543. 二叉树的直径 + 二叉树 + 递归 】

【Leetcode:543. 二叉树的直径 + 二叉树 + 递归 】给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。

Coder_ljw的博客 1201

qtcreator使用远程服务器编译代码

我并没有找到很好的windows上可以用的rsync工具,最后是装了wsl来调用rsync同步到代码后,在用ssh调用linux命令来编译的。安装wsl安装ubuntu启动wsl然后把windows里的ssh文件证书和配置复制到wsl里同时config的key目录需要改一下,这样就可以登录服务器了然后在home目录创建build.sh进行远程编译。

习惯就好zz的专栏 1383

把 ABAP ALV 表头做成两层分组:用 TOP-OF-PAGE 手工绘制双行列标题

摘要:本文介绍了在SAP ALV List中实现双层表头的方法。通过关闭系统默认列标题(no_colhead='X'),在TOP_OF_PAGE事件中手动绘制表头,使用sy-uline和sy-vline绘制线条实现分组效果。关键点包括:1)关闭系统表头;2)在事件处理中分两行输出分组标题和字段名;3)利用系统自动拼接线条的特性绘制表格边框。文中还指出了常见问题如线条自动粘连、颜色不生效等,并提供了完整示例代码和详细解释。这种方法适用于需要对字段进行业务分组的报表场景。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 261

LeetCode Java面试刷题笔记汇总

LeetCode Java刷题笔记汇总,按照类型刷题效率更高。

终生学习践行者 2948

【STM32 CubeMX】I2C中断方式与DMA方式

在STM32 CubeMX环境中,I2C(Inter-Integrated Circuit)通信协议的实现可以采用中断方式或DMA(Direct Memory Access)方式。中断方式通过触发中断来处理数据传输,而DMA方式则利用直接内存访问技术来实现数据传输,减轻了CPU的负担。在选择I2C通信方式时,开发者需要根据具体的应用需求和性能要求来选择合适的方式。STM32 CubeMX提供了图形化配置工具,使得配置I2C通信方式变得更加便捷。

m0_62599305的博客 7749

leetcode刷题记录(七十三)——543. 二叉树的直径

543. 二叉树的直径 - 力扣(LeetCode)543. 二叉树的直径 - 给你一棵二叉树的根节点,返回该树的 直径。二叉树的 直径 是指树中任意两个节点之间最长路径的 长度。这条路径可能经过也可能不经过根节点 root。两节点之间路径的 长度 由它们之间边数表示。

weixin_45994787的博客 1054

SAP Cloud ERP 是什么,一篇文章讲清楚

SAP Cloud ERP并非简单将传统ERP搬到云上,而是对企业核心流程、数据和管理方式的全面重构。它包含S/4HANA Cloud的公有云版(标准化、快速部署)和私有云版(灵活定制),分别对应GROW with SAP和RISE with SAP实施路径。核心价值在于实现实时数据整合、端到端流程贯通及持续演进能力。企业需根据发展阶段选择:新兴企业适合标准化公有云,复杂组织可考虑私有云迁移。关键在于转变管理思维,避免将旧系统问题复制到新平台。上云决策本质是企业对数字化基座的选择,需权衡标准化与个性化需求。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 109

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Java实现 LeetCode 543 二叉树的直径

543. 二叉树的直径 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路...

Marcus 3375

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LeetCode100之二叉树的直径(543)--Java

这道题,只需要理清几个概念直接的关系,就可以将问题简化成我们曾经做过的求深度问题,这样问题也就轻松解决了。

2301_79318558的博客 1377

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

LeetCode题练习与总结:二叉树的直径--543

本文详细介绍了求解二叉树直径的解题思路和具体代码实现,分析了时间复杂度和空间复杂度,并总结了涉及的关键知识点,为理解二叉树相关问题提供了有效指导。

一直学习永不止步 1029

leetcode-543-二叉树的直径-java

题目及测试 package pid543; /*543. 二叉树的直径 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 示例 : 给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 注意:两结点之间的路径长度是以它们之间

今天吃了吗的博客 341

Leetcode刷题java之543. 二叉树的直径

执行结果: 通过 显示详情 执行用时 :0 ms, 在所有 Java 提交中击败了100.00% 的用户 内存消耗 :38.4 MB, 在所有 Java 提交中击败了16.83%的用户 题目: 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。 示例 : 给定二叉树 1 / \...

逆水行舟,不进则退 614

【Leetcode hot 100】543.二叉树的直径

二叉树的直径定义为任意两节点间的最长路径长度。通过深度优先搜索(DFS)计算每个节点的子树深度,同时记录左右子树深度之和的最大值作为直径。时间复杂度O(n),空间复杂度O(h),其中h为树高。Java实现中利用数组引用传递更新全局最大直径,确保递归过程中正确维护结果。

专注Java和MySQL领域知识分享 899

精选力扣500题 第50题 LeetCode 543. 二叉树的直径【c++详细题解】

目录1、题目2、思路3、c++代码4、java代码 1、题目 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 示例 : 给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 注意: 两结点之间的路径长度是以它们之间边的数目表示。 2、思路 (递归,树的遍历) O(n)O(n)O(n) 在这

林深不见鹿 的博客 737

求二叉树上结点的路径_LeetCode 力扣官方题解 | 543. 二叉树的直径

力扣 543.二叉树的直径(点击查看题目)力扣​leetcode-cn.com题目描述给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。​示例:给定二叉树 1 / 2 3 / 4 5返回 3, 它的长度是路径 [4,2,...

weixin_39791152的博客 264

#力扣 LeetCode543. 二叉树的直径 #在所有 Java 提交中击败了 100.00% 的用户 @FDDLC

题目描述: 543. 二叉树的直径 - 力扣(LeetCode) (leetcode-cn.com) Java代码一: class Solution { public int getTreeHeight(TreeNode root){ if(root==null)return 0; return Integer.max(getTreeHeight(root.left),getTreeHeight(root.right))+1; } pub.

LiuXingchang的博客 368
上一篇: java数据结构与算法刷题-----LeetCode538. 把二叉搜索树转换为累加树
下一篇: java数据结构与算法刷题-----LeetCode437. 路径总和 III(前缀和必须掌握)
ydenergy_殷志鹏
博客等级 码龄7年 5886粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值