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

Java实现 LeetCode 543 二叉树的直径 543. 二叉树的直径 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。 示例 : 给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 注意:两结点之间的路径长度是以它们之间边的数目表示。 PS: 二叉树的直径不一定过根节点,因此需要去搜一遍... 阅读详情

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述
在这里插入图片描述

🚩 题目链接

⛲ 题目描述

给你一棵二叉树的根节点,返回该树的 直径 。

二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。

两节点之间路径的 长度 由它们之间边数表示。

示例 1:
在这里插入图片描述

输入:root = [1,2,3,4,5]
输出:3
解释:3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。
示例 2:

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

提示:

树中节点数目在范围 [1, 104] 内
-100 <= Node.val <= 100

🌟 求解思路&实现代码&运行结果


⚡ 二叉树 + 递归

🥦 求解思路
  1. 本题的目标是找树的最大直径,一个节点的最大直径 = 它左树的高度 + 它右树的高度。
  2. 我们设计一个递归函数,递归函数的目标就是就是当前节点的高度,在递归的过程中,通过一个成员变量来记录此时此时二叉树的最大直径,递归函数的返回值为此时Math.max(它左树的高度,它右树的高度) + 1。
  3. 有了基本的思路,接下来我们就来通过代码来实现一下的解法。
🥦 实现代码
/**
 * 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 ans;

    public int diameterOfBinaryTree(TreeNode root) {
        ans = 0;
        depth(root);
        return ans;
    }

    public int depth(TreeNode node) {
        if (node == null) {
            return 0; 
        }
        int L = depth(node.left);
        int R = depth(node.right);
        ans = Math.max(ans, L + R); 
        return Math.max(L, R) + 1;
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

【程序化天空盒】过程记录01:日月 天空渐变 大气散射 在做一个仿照原神的天空盒,写文章作为技术总结和记录。 阅读详情

相关推荐

半导体制造中的通孔缺陷与冗余通孔技术解析

通孔(Via)是半导体制造中连接不同金属层的关键结构,其可靠性直接影响芯片良率。随着工艺节点演进至28nm及更先进制程,通孔缺陷导致的良率损失日益显著,主要表现为完全开路和高阻态两种失效模式。冗余通孔技术通过在关键位置增加备用连接,可有效提升芯片可靠性,其实现涉及物理冗余与电气冗余两种方案。该技术在7nm/5nm工艺中已证明可将通孔相关缺陷率降低10-100倍,但面临设计规则复杂性、规模处理效率和动态合规验证等工业化挑战。智能双切通孔插入流程通过动态DRC规则解析、奇偶层级并行处理和增量式验证等创新方法,显

weixin_35982453的博客 381

LeetCode 543. 二叉树的直径 动态规划树形DP详解

通过递归和 DFS 算法,我们可以有效地求解二叉树的直径问题。此方法思路清晰,易于实现,且具有较高的效率。

Lentr0py的博客 599

SAP后台JOB保姆级教程:从SM36创建到SM37监控,手把手教你搞定ABAP程序定时任务

本文详细解析SAP后台JOB从创建到监控的全流程,重点介绍SM36创建和SM37监控的操作步骤与最佳实践。通过真实案例演示如何配置定时任务、处理常见故障及实施企业级管理策略,帮助ABAP开发者高效管理后台程序执行。

weixin_30838873的博客 430

【LeetCode:643. 子数组最大平均数 I + 滑动窗口】

【LeetCode:643. 子数组最大平均数 I + 滑动窗口】给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。 请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。 任何误差小于 10-5 的答案都将被视为正确答案。

Coder_ljw的博客 654

RK3566基于Buildroot定制QT开发环境的完整指南

本文详细介绍了如何在RK3566开发板上使用Buildroot定制QT开发环境的完整流程。从基础环境搭建、Buildroot初始配置到QT模块选择与编译验证,提供了实战经验和常见问题解决方案,帮助开发者高效完成嵌入式Linux下的QT开发环境部署。

weixin_26804345的博客 357

【技能】OpenClaw Memory 与 MemOS 两种 AI 记忆方案深度解析

摘要:本文对比了两种AI记忆系统方案。OpenClaw Memory是轻量级记忆助手,内置SQLite存储,支持语义搜索,部署简单成本低,适合日常对话记忆需求。MemOS是自学习系统,通过Neo4j和Qdrant实现技能自进化,但需部署4套服务,门槛高成本大。建议普通用户选择OpenClaw Memory,技术玩家可逐步尝试MemOS。两种方案各具优势,需根据实际需求选择。

海兰 193

基于Java实现LeetCode算法汇总(持续更新)

DataStructure-Algorithm In order to enhance my designing capability of normal algorithm, I make a plan, exercising algorithm everyday. So this repository is used for storing algorithm programs, which...

shuaijunlan的专栏 4025

03、AC分析

本节我们将对之前的BUCK电路进行AC分析! 首先,我们之前的BUCK电路是开环电路,现在我们把它设计成闭环电路!电路图如下: 我们对闭环BUCK电路先瞬态仿真一下,波形如下: 然后在电路中加入小信号和波特图进行AC仿真 原理图如下: 增益为0时所对应的相位裕度为56°,这个相位裕度一定要大于0°,大于45°则比较稳定! ...

soumns丶涛的博客 3517

Leetcode 543(Java)

Given a binary tree, you need to compute the length of the diameter of the tree. The diameter of a binary tree is the length of the longest path between any two nodes in a tree. This path may or may no

catttbao的博客 767

基于Python的虚拟货币社区情绪分析与市场价格预测爬虫实现

本文探讨了如何利用Python爬虫技术获取虚拟货币社区数据,并通过情感分析预测市场价格走势。我们将使用最新的异步爬虫框架、自然语言处理技术和机器学习模型,构建一个完整的社区情绪分析系统。本文提供了详细的代码实现和理论解释,适合作为毕业设计参考。关键词:Python爬虫、虚拟货币、情感分析、价格预测、异步爬虫、机器学习爬虫框架aiohttp和httpx用于异步HTTP请求HTML解析和parsel数据存储MongoDB和Pandas用于数据处理自然语言处理库和VADER情感分析工具机器学习和。

2201_76125261的博客 521

YOLO-V8训练自己的数据集之标注样本

四、标注样本 4.1、标注样本概述 4.1.1、样本标注主要方法 4.1.2、标注样本概念 4.1.3、标注样本实现方式 4.1.4、常见标注样本软件 4.2、标注工具LabelImg 4.2.1、LabelImg介绍 4.2.2、LabelImg特点 4.2.3、LabelImg安装方法 4.2.4、LabelImg使用方法 4.3、标注样本实操 4.3.1、安装标注软件Labelimg 4.3.2、Labelimg界面介绍 4.3.3、LabelImg实操过程中常

qq_29633789的博客 662

LeetCode 543:二叉树直径的递归与迭代解法详解

二叉树直径是指树中任意两节点间最长路径的长度,这是树形数据结构中的基础问题。通过后序遍历递归计算每个节点的左右子树高度,可以高效求解直径。该算法的时间复杂度为O(N),空间复杂度取决于树的高度。在实际应用中,类似思想可用于网络拓扑设计、文件系统路径优化等场景。本文以LeetCode热门题目为例,结合递归与迭代两种实现方式,深入解析如何正确处理子树高度与全局直径的关系,并针对常见错误提供调试技巧。掌握这类二叉树遍历技术,对提升算法能力和解决工程问题都具有重要意义。

weixin_28716181的博客 301

YOLOv11改进策略【注意力机制篇】| 2024 蒙特卡罗注意力(MCAttn)模块,提高小目标的关注度

本文记录的是基于蒙特卡罗注意力(MCAttn)模块的YOLOv11目标检测改进方法研究。利用提高的跨尺度特征提取能力,使模型能够更好地传递和融合提取的多尺度特征,提高对小目标的关注度。Exploiting Scale-Variant Attention for Segmenting Small Medical Objects使用一种基于随机采样的池化操作来生成尺度无关的注意力图。它从三个不同尺度(3×33×33×3、2×22×22×2和1×11×11×1,即池化张量)中随机选择一个1×11×11×1注意力图

Limiiiing的博客 3599

二叉树直径(LeetCode 543)递归解法:原理、调试与变体延伸

二叉树是算法与工程中广泛使用的数据结构,递归则是处理树形结构最基础也最核心的方法之一。在递归求解中,关键在于明确函数的返回值与全局状态的更新时机——这既是树形动态规划的原理,也常常是运行时错误的来源。掌握这种递归设计方法,能够触类旁通地解决二叉树深度、平衡判断、最大路径和等一类问题,同时可迁移至目录树、多级菜单、权限树等真实业务场景。本文围绕LeetCode热题第543题“二叉树的直径”,从题目定义出发,拆解递归实现中的高度返回与直径更新逻辑,并总结常见的调试经验、边界用例及变体延伸题目,帮助读者彻底理解这

weixin_34098209的博客 187

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

LeetCode 543:二叉树直径的JavaScript递归解法详解

二叉树遍历是算法面试中的高频考点,而递归则是解决树形结构问题最自然的思维方式。在树的深度优先搜索(DFS)中,后序遍历是一种特殊的遍历顺序:先处理左右子树,再处理当前节点,使得我们能够在返回路径上汇总子树信息。这一原理不仅用于计算树的高度,更衍生出许多经典问题,比如求解二叉树直径——即任意两个节点间最长路径的边数。通过在后序遍历过程中实时更新全局最优值,并让递归函数返回单侧最大深度,就能在一次遍历内高效求解。该技巧在前端工程中同样适用,例如分析DOM树嵌套深度或递归解析JSON结构。本文结合JavaScri

weixin_32308101的博客 257

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

LeetCode 543:二叉树直径的递归解法与常见误区

树形数据结构中,路径长度的定义直接影响递归算法的正确性。二叉树直径问题要求统计任意两个节点之间最长路径的边数,而非节点数,这是许多递归实现结果偏差的根源。常规解法通过后序遍历,让每个子树向上返回深度信息,同时用全局变量更新答案,这一模式正是树形DP的典型形态。其技术价值在于将“状态传递”与“答案统计”分离,可广泛应用于二叉树遍历、面试算法题以及网络拓扑直径计算等场景。本文以LeetCode 543题为例,剖析边数口径、递归返回值定义、O(N²)性能超时等关键坑点,并延伸到最长同值路径等变体问题,帮助读者建立

weixin_30444111的博客 260

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LeetCode 543:二叉树直径的递归解法与树形DP套路

二叉树作为基础数据结构,其遍历与递归是算法面试高频考点。直径问题本质是求树中任意两节点间最长路径的边数,解法依赖后序遍历自底向上计算子树高度。通过递归函数返回当前子树最大深度,并在每个节点处比较“左高+右高+2”更新全局答案,即可在线性时间内完成求解。这种“返回值供上层使用,外部变量维护最终答案”的树形DP模板,广泛应用于二叉树最大路径和、平衡二叉树判断等题目。以LeetCode 543为例,拆解题目陷阱、递归边界与代码实现,帮助读者掌握树形递归的通用套路。

weixin_29973493的博客 219

LeetCode 543:二叉树直径的递归解法与后序遍历详解

二叉树是算法面试中最常出现的数据结构之一,而递归是理解树类问题的核心钥匙。树的直径问题要求找出任意两个节点之间的最长路径长度,难点在于路径未必经过根节点,必须自底向上逐层计算每个节点的左右子树深度,并以后序遍历的方式同步更新全局最优值。这种“深度优先遍历 + 全局统计”的思路,不仅是解决 LeetCode 543 的关键,也是众多树形动态规划问题的通用范式。在实际工程中,理解深度与直径的递推关系、区分节点深度与候选路径长度,能帮助我们写出更健壮的递归程序,避免常见的运行时错误。本文通过完整代码、复杂度分析和

weixin_32576389的博客 241

LeetCode 543题解析:二叉树直径的递归解法与优化

二叉树直径是算法面试中的经典问题,指树中任意两节点间最长路径的边数。其核心计算原理基于后序遍历,通过递归获取左右子树高度并维护全局最大值。这类DFS递归解法时间复杂度为O(N),空间复杂度取决于树高,是处理树形结构的典型范式。在实际工程中,类似思想可用于网络拓扑分析、路径优化等场景。本文以LeetCode Hot100第543题为例,详解如何避免常见误区,并给出Python/Java多语言实现。掌握这种'高度计算+全局维护'的模式,也能轻松应对平衡二叉树验证、最长同值路径等变种问题。

weixin_33462167的博客 252

二叉树直径详解:后序遍历与递归返回深度,力扣543题解析

树是算法面试中常见的非线性数据结构,而遍历是解决树问题的基石。深度优先搜索(DFS)中的后序遍历,因其“先孩子后父亲”的顺序,天然适合处理父子节点间的信息传递。在求解二叉树最大深度时,递归函数只需返回单边最大深度;而二叉树的直径问题则进一步要求在每个节点处,将左右子树的深度拼接为一条候选路径,并取全局最大值。这一思路不仅是力扣hot100第543题的核心解法,更是树形动态规划的入门范式。掌握后序遍历的返回值设计,就能举一反三解决最大路径和、多叉树直径等延伸问题。本文从定义误区、递归原理、代码实现到常见陷阱,

weixin_28312391的博客 216

递归函数返回值与全局变量:攻克LeetCode 543二叉树直径

递归是二叉树算法体系中最基础也最容易被低估的核心能力,深度优先搜索(DFS)、后序遍历等概念几乎贯穿所有树形结构问题。在求解树的直径时,递归函数需要同时扮演两个角色:向上返回子树深度供父节点使用,同时借助全局变量记录跨越当前节点的最长路径。理解“返回深度”与“更新直径”的分工,是设计自底向上递归的关键。相比暴力法反复计算深度,一次后序遍历即可完成信息复用,将时间复杂度优化到O(N)。这一模式不仅能解决LeetCode 543,也能顺带搞定最大深度、最大路径和等同族题目,是算法面试中高频出现的思维模板。本文以

weixin_32667955的博客 330

LeetCode 543 二叉树直径:后序遍历与递归的深度解析

二叉树是算法面试中的基础结构,其遍历方式与递归思想贯穿许多经典问题。在解决树形结构的最长路径问题时,理解节点的高度与深度是关键前提。二叉树的直径定义为任意两个节点间的最长路径长度,这条路径不一定经过根节点,因此不能简单套用“左子树深度加右子树深度”的惯性思维。通过后序遍历,每个节点都能作为潜在拐点,递归返回子树高度,同时用全局变量记录左右子树高度之和的最大值。这种树形DP的模板在最大深度、最长同值路径、最大路径和等问题中具有广泛适用性。本文从概念到原理,逐步分析错误案例与正确解法,帮助读者掌握这一高频算法思

weixin_33428613的博客 251

LeetCode 543二叉树直径详解:递归后序遍历与树形DP核心思路

在算法面试与LeetCode刷题过程中,二叉树是数据结构的高频考点,而递归与深度优先搜索又是掌握树类题目的基础。许多看似简单的题目,实则隐藏着对遍历顺序与返回值语义的深刻考察。二叉树直径问题便是典型代表,它要求计算任意两个节点间的最长路径边数,本质上属于树形动态规划的入门模型。通过后序遍历,我们可以自底向上获取子树深度,并在每个节点合并左右信息,从而将暴力枚举优化到线性时间复杂度。深入理解此题的递归原理,不仅能攻克名企笔试关卡,更能为最大路径和等进阶问题打下坚实基础。本文围绕LeetCode 543题,拆解

weixin_33491377的博客 132

LeetCode 543题解析:二叉树直径计算与递归遍历技巧

二叉树是数据结构中的基础概念,其遍历算法包括前序、中序和后序三种经典方式。后序遍历因其'左右根'的特性,特别适合解决需要先处理子节点再处理父节点的问题。在工程实践中,递归算法通过函数调用栈实现深度优先搜索,能够高效计算树形结构的各类属性。以LeetCode 543题为例,该题要求计算二叉树的直径(最长路径边数),其核心在于理解直径可能存在于任意子树中,而不仅限于通过根节点的路径。通过DFS后序遍历,可以在O(n)时间复杂度内同时计算子树高度并更新最大直径,这种'边计算边更新'的模式是处理树形结构的通用范式。

weixin_30512965的博客 77

LeetCode 543二叉树直径:后序遍历与全局变量递归模板

二叉树是数据结构面试中的高频考点,而树的直径问题则是理解递归与动态规划结合的关键入门题。所谓直径,即任意两节点间最长路径的边数,它并不一定经过根节点。解决该问题的常用算法是后序遍历:先递归计算左右子树的最大深度,再用全局变量实时更新左右深度之和的最大值。这一模式将局部最优与全局最优结合,是树形DP的典型骨架。除了刷题场景,类似思路也常用于调用链耗时分析、网络拓扑最长路径等工程实践。本文以LeetCode 543为例,从深度与直径的区别、递归返回值设计到多语言实现,系统拆解这一经典算法模板。

weixin_30516429的博客 213

二叉树的直径:递归后序遍历与全局最优维护 | LeetCode 543

在计算机科学中,二叉树是最基础的数据结构之一,而递归则是处理树形问题最自然的思维工具。通过后序遍历,每个节点在完成左右子树计算后返回深度信息,这种“自底向上”的求解过程,能将复杂的全局问题拆解为局部决策。在算法设计与工程实践中,掌握这种方法不仅有助于解决LeetCode经典题目,更能培养对树形动态规划的直觉。例如求树的直径时,关键在于每个节点作为路径拐点时的局部最优组合,最终通过全局变量聚合答案。基于这种思路,可以系统理解二叉树深度、高度与直径的关系,并轻松迁移至最大路径和等进阶问题。本文以LeetCode

weixin_30225755的博客 133
上一篇: 【Leetcode:698. 划分为k个相等的子集 + 递归】
下一篇: 【Leetcode:79. 单词搜索 + dfs】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

硕风和炜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值