二叉树----5.二叉树的直径

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

题目链接

/**

            直径:以某点为基准 其左子树最大深度+右子树最大深度

            该二叉树直径: 所有直径中最长的一个

            计算每个节点的左右子树最大深度,顺带计算直径即可

*/

/**
 * 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 {
     private int maxDiameter = 0; // 记录最大直径
    
    public int diameterOfBinaryTree(TreeNode root) {
        /** 
            直径:以某点为基准 其左子树最大深度+右子树最大深度
            该二叉树直径: 所有直径中最长的一个

            计算每个节点的左右子树最大深度,顺带计算直径即可
         */
         maxDepth(root);
         return maxDiameter;

    }

    private int maxDepth(TreeNode root) {
        if(root == null) {
            return 0;
        }

        int leftDepth = maxDepth(root.left); //左子树最大深度
        int rightDepth = maxDepth(root.right); //右子树最大深度

        //更新最长直径
        maxDiameter = Math.max(maxDiameter,leftDepth + rightDepth);
        
        return Math.max(leftDepth,rightDepth) + 1; //计算当前节点最大深度
    }


}

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

相关推荐

GlobalPlatform Technology Secure Channel Protocol ‘03‘ 标准 - 安全通道协议简介

按照GlobalPlatform Technology Secure Channel Protocol '03' (SCP03)标准,描述了如何利用S-MAC,S-RMAC,S-ENC进行安全通信的过程。

mmmx777的专栏 6092

刷题记录 HOT100 二叉树-5:543. 二叉树的直径

用合适的遍历顺序 + 全局变量,常用于解决二叉树中需要全局验证的问题和部分的查找问题该类型是一个模式类别,需要单独记下来:除了本题543. 二叉树的直径外还有98. 验证二叉搜索树199. 二叉树的右视图当然也有一些题目需要全局变量但对遍历顺序无要求。

weixin_44610684的博客 884

LLM之RAG实战(五十四)| 复杂文档处理RAG框架:Ragflow

RAGFlow 是一种结合了检索增强(Retrieval-Augmented Generation,RAG)与流程控制(Flow)的人工智能技术架构。它通过检索外部知识库中的信息,结合自然语言生成技术,为用户提供更准确、更丰富的回答。同时,它还引入了流程控制机制,能够根据任务需求动态调整信息检索和生成的流程,从而更好地完成复杂的任务。RAGFlow 的核心优势在于将检索和生成相结合,打破了传统生成模型仅依赖内部参数进行文本生成的局限。

wshzd的博客 1067

记录算法笔记(2025.5.14)二叉树的直径

3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。思路:递归计算左右子树的深度,左子树深度加右子树深度+1就是直径。//递归结束条件为node为空。这条路径可能经过也可能不经过根节点。//递归计算左右子树的高度。是指树中任意两个节点之间最长路径的。给你一棵二叉树的根节点,返回该树的。由它们之间边数表示。

weixin_74353267的博客 221

强化学习Q值迭代的几何视角:从策略区域到快速收敛

在强化学习中,Q值迭代是求解最优策略的核心算法,其理论基础建立在贝尔曼不动点定理之上。该算法通过迭代更新Q函数,使其逐步逼近最优值函数。从几何视角看,整个Q函数空间可被视为一个高维流形,每个Q函数对应流形上的一个点,而贝尔曼最优算子则定义了流形上的变换轨迹。理解这一几何结构,特别是由策略超平面划分出的凸多面体区域,对于分析算法的收敛行为至关重要。在实际工程中,传统Q值迭代可能在高维或稀疏奖励环境下收敛缓慢,甚至陷入策略高原。通过引入策略区域缓存与自适应学习率等几何启发方法,可以更高效地导航策略空间,加速策略

weixin_30444111的博客 319

【Ragflow】9.问答为什么比搜索响应慢?从源码角度深入分析

前几天看到有群友提到一个现象:Ragflow的搜索界面的问答速度很快,但聊天界面的问答速度很慢,究竟是什么原因?在深入挖掘源码之后,逐渐发现了问题的答案。

兴趣使然的创作者 2904

力扣刷题Day 5:二叉树的直径(543)

用递归的方法,从叶子结点往上溯,函数返回每个结点的左、右子树最大深度以及当前“直径”(即当前最长路径, 也即当前最大的左、右子树最大深度和)。

qq_52643100的博客 184

YOLOv13改进策略【特征提取层】| CVPR-2024 PKI Module 获取多尺度纹理特征,适应尺度变化大的目标

PKI Module是。

Limiiiing的博客 276

leetcode 精选100题(5)二叉树的直径-简单

题目 解题总结 又是一道不会做的题。 我的思路是,每一个节点作为根节点,找到左右子树最长路径,相加起来,就是经过该节点的最长路径。 再从中找到最长的那一个。 代码如下: /** * @param {TreeNode} root * @return {number} */ var diameterOfBinaryTree = function(root) { let maxDis=(root, len)=>{ if(!root) return len; .

艾米栗的代码天地 272

微信小程序 - 接入腾讯地图 SDK 及详细使用教程,结合小程序 mpa 地图组件展示腾讯地图(基础使用 / 授权当前位置 / 配合小程序map组件的使用 / 腾讯地图逆地址解析 / 坐标系的转化)

微信小程序使用腾讯地图完整流程,微信小程序 接入腾讯地图,如何在微信小程序中接入腾讯地图,微信小程序引入腾讯地图API方法,腾讯地图小程序SDK,微信小程序实现使用腾讯地图SDK步骤详细介绍,微信小程序接入腾讯地图(线路规划、逆解析)、高德地图,微信小程序之使用腾讯地图,微信小程序 接入第三方地图,小程序服务器配置地图,微信小程序接入腾讯地图,微信小程序插入腾讯地图教程,微信小程序如何调用腾讯地图,如何在微信小程序中接入腾讯地图,微信小程序腾讯地图SDK使用方法,在微信小程序上创建一个简单的腾讯地图,微信小

✅ 精选推荐文章 1万+

YOLO26优化:注意力魔改 | 用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测,暴力涨点

用于微小目标检测的上下文增强和特征细化网络ContextAggregation,助力小目标检测

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 491

【每日一题】【DFS】2022年1月5日-543. 二叉树的直径

给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 答案: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode righ...

USTSD的博客 286

数据行小于列索引,内部模式表示可能存在问题

通过检查数据源的完整性和一致性,检查Debezium配置,检查列映射以及启用调试模式和日志记录,您应该能够解决这个错误。请注意,具体的解决方法可能因您的具体情况而异,因此您可能需要根据问题的根本原因进行适当的调整和修复。如果问题仍然存在,您可能需要进一步检查您的数据和配置,并根据具体情况进行调整和修复。在Debezium中,您可以使用列重命名和列映射来定义源和目标之间的列映射关系。通过检查日志,您可以查看详细的错误信息和堆栈跟踪,从而更好地理解问题的根本原因。首先,我们应该检查数据源的完整性和一致性。

XbtoMemory的博客 731

【二叉树】【遍历+子树问题】1、二叉树的最大深度+2、二叉树的直径+3、二叉树的坡度+4、二叉树的前序遍历+5、二叉树的最小深度

【二叉树】【遍历+子树问题】1、二叉树的最大深度+2、二叉树的直径+3、二叉树的坡度+4、二叉树的前序遍历+5、二叉树的最小深度

weixin_50512050的博客 326

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【leetcode】543. 二叉树的直径

对节点 2:l_len = 0 + 1 = 1,r_len = 0 + 1 = 1,self.ans = max(0, 1 + 1) = 2,返回 max(1, 1) = 1。对节点 1:l_len = 1 + 1 = 2,r_len = 0 + 1 = 1,self.ans = max(2, 2 + 1) = 3,返回 max(2, 1) = 2。最终返回 self.ans = 3,表示二叉树的直径为 3,即从节点 4 到节点 5,通过节点 2 再到节点 1,该路径包含 3 个节点。

qq_38473254的博客 1078

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

18923 二叉树的直径

Description 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 1 / 2 3 / \ 4 5 答案为3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 输入格式 共n行。 第一行一个整数n,表示有n个结点,编号为1至n。 第二行至第n行,每行有两个整数x和y,表示在二叉树中x为y的父节点。x第一次出现时y为左孩子 输出格式 输出二叉树的直径。 输入样例 5 1 2 1 3 2 4 2 5

weixin_56684908的博客 328

5.9leetcode22. 括号生成17. 电话号码的字母组合543. 二叉树的直径

22. 括号生成 回溯:选择(展开树),约束(剪枝),目标(结束回溯) class Solution: def generateParenthesis(self, n: int) -> List[str]: le, ri = 0, 0 res = [] def tra(n, le, ri, tmp): if n==le and n==ri: res.append(tmp) .

weixin_51564269的博客 212

LeetCode-热题100:543. 二叉树的直径

LeetCode-热题100:543. 二叉树的直径

qq_44852180的博客 325

牛客_二叉树的直径

【代码】牛客_二叉树的直径。

d3y1`5 81_09 111

C++刷 LeetCode Hot100 笔记(十一)二叉树专题(中):二叉树的直径、将有序数组转换为二叉搜索树、验证二叉搜索树、二叉搜索树中第 K 小的元素、二叉树的右视图

本篇继续整理二叉树专题中段内容,重点是两类思路:一类是树形递归中“返回值 + 全局答案”的配合,比如二叉树的直径;另一类是抓住二叉搜索树的性质,尤其是“中序遍历有序”,解决验证 BST 和第 K 小元素问题。另外还补了有序数组构造平衡 BST,以及用层序遍历求二叉树右视图。

2301_79911329的博客 47

【LeetCode Hot100----08-二叉树篇中(06-10),包含多种方法,详细思路与代码,让你一篇文章看懂所有!】

摘要: 本文介绍了两个经典二叉树问题的解法。首先,针对543题二叉树的直径问题,提出基于深度优先搜索(DFS)的解法:通过后序遍历计算每个节点的左右子树深度,并在遍历过程中更新最大直径(左右深度之和)。时间复杂度O(n),空间复杂度O(h)。其次,针对102题二叉树的层序遍历,给出迭代法实现:使用队列按层处理节点,记录每层节点数实现严格分层。两种解法都通过详尽的步骤说明和代码示例展示了实现细节,并分析了时间/空间复杂度。关键点在于理解直径计算与深度遍历的关系,以及队列在层序遍历中的作用机制。

xxxxxxllllllshi的博客 1397

543、二叉树的直径

在这个树中,根为4,最大直径不在4为根的树中,再看-3为根的树,结果等于-3为根的这棵树的左子树最大深度(3)加上右子树最大深度(3)如果不经过根的话,就只看左子树或者右子树,在某一个子树中直径一定等于它的左子树最大深度加上右子树最大深度。整体思路是一样的,但是比我想得少了不少次递归,通过一个私有属性来记录,再用返回值返回深度,挺好!也就是说,要寻找直径的话有两个信息需要传递,一个是当前求出的最大直径,一个是当前子树的深度。3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。

geooorge的博客 407

求二叉树的直径

#include<stdio.h> #include<stdlib.h> typedef int status; typedef struct BiTNode { int data,new_data; struct BiTNode* lchild, *rchild; }BiTNode, *BiTree; BiTree creat() { BiTree root...

qq_43661234的博客 503

1181. 二叉树的直径

1181.二叉树的直径 给定一颗二叉树,您需要计算树的直径长度。 二叉树的直径是树中任意两个节点之间最长路径的长度。 此路径不一定会通过树根。 样例 样例 1: 给定一棵二叉树 1 / \ 2 3 / \ 4 5 返回3, 这是路径[4,2,1,3] 或者 [5,2,1,3]的长度. 样例 2: 输入:[2,3,#,1] 输出:2 解释: 2 / 3 / 1 注意事项 两个节点之间的路径长度由它们之间的边数表示。 ...

时代我西的博客 147

以下是5道天梯赛Python编程模拟题的详细解答,所有代码均经过严格测试且可直接运行

解释 路径0→1®→3(B) 无效(颜色连续相同),合法路径0→2(B)→1®→3(B) 总代价3+1+1=5。给定带颜色边的有向图,求从起点到终点的最短路径,要求路径中相邻边颜色不能相同。接下来N行:每行M+1个数字表示profit[i][0]到profit[i][M]题目1:彩色图最短路径(带颜色限制的Dijkstra算法)解释 分配方案:项目1分2,项目2分1,总收益4+5=9。求二叉树的直径(任意两节点最长路径长度)。解释 路径4-2-1-3或5-2-1-3。第一行:n m(节点数,边数)

分享平时的学习心得和笔记 322

LeetCode 刷题系列 -- 543. 二叉树的直径

给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。两结点之间的路径长度是以它们之间边的数目表示。

qq_33775774的博客 150
上一篇: Redis----数据结构
下一篇: 二叉树----6.二叉树的层序遍历
码破苍穹ovo
博客等级 码龄2年 377粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值