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

543.二叉树的直径

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

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

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

image-20231003083307846

首先我们知道一条路径的长度为该路径经过的节点数减一,所以求直径(即求路径长度的最大值)等效于求路径经过节点数的最大值减一。

而任意一条路径均可以被看作由某个节点为起点,从其左儿子和右儿子向下遍历的路径拼接得到。

image-20231003083334098

如图我们可以知道路径 [9, 4, 2, 5, 7, 8] 可以被看作以 2 为起点,从其左儿子向下遍历的路径 [2, 4, 9] 和从其右儿子向下遍历的路径 [2, 5, 7, 8] 拼接得到。

假设我们知道对于该节点的左儿子向下遍历经过最多的节点数 L (即以左儿子为根的子树的深度) 和其右儿子向下遍历经过最多的节点数 R(即以右儿子为根的子树的深度),那么以该节点为起点的路径经过节点数的最大值即为 L+R+1

记节点node为起点的路径经过节点数的最大值为 d n o d e d_{node} dnode,那么二叉树的直径就是所有 d n o d e d_{node} dnode的最大值减一

最后的算法流程为:定义一个递归函数 d e p t h ( n o d e ) depth(node) depth(node),计算 d n o d e d_{node} dnode,函数返回该节点为根的子树的深度,先递归调用左儿子和右儿子求得它们为根的子树的深度L和R,则该节点为根的子树的深度即为 m a x ( L , R ) + 1 max(L,R)+1 max(L,R)+1,该节点的 d n o d e d_{node} dnode值为L+R+1

递归搜索每个节点并设一个全局变量ans记录 d n o d e d_{node} dnode的最大值,最后返回ans-1即为树的直径

/*** 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 = 1;depth(root);return ans - 1;}public int depth(TreeNode node) {if (node == null) {return 0; // 访问到空节点了,返回0}int L = depth(node.left); // 左儿子为根的子树的深度int R = depth(node.right); // 右儿子为根的子树的深度ans = Math.max(ans, L+R+1); // 计算d_node即L+R+1 并更新ansreturn Math.max(L, R) + 1; // 返回该节点为根的子树的深度}}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

地下水数值模拟软件如何选择?GMS、Visual MODFLOW Flex、FEFLOW、MODFLOW

强调模块化教学,分为前期数据收集与处理;三维地质结构建模;地下水流动模型构建;地下水溶质运移模型构建和反应性溶质运移构建5个模块;采用全流程模式将地下水数值模拟软件GMS的操作进行详细剖析和案例联系。不仅使学员…

【消费战略方法论】品效烙印营销的策略模型

品效烙印营销策略模型 营销,分为品牌营销和效果营销。品牌营销的主要目的是提升品牌声量、抢占用户心智、打造品牌知名度、积累品牌资产。效果营销的主要目的是瞬间获得流量,并且迅速转化成销量。 品效合一:品牌营销 效果营销。品牌营销和效…

px4的gazebo仿真相机模型报错解决办法,返回值256

👉事情起因:我想做关于PX4无人机的摄像头仿真,根据PX4的官网文件 Tools/sitl_gazebo文件夹里面有对应的模型可以使用,我就想在mavros_posix_sitl文件里面修改vehicle参数,比如直接将vehicle“iris_stereo_camera”。然…

【Java 进阶篇】使用 JDBCTemplate 执行 DML 语句详解

JDBCTemplate 是 Spring 框架中的一个核心模块,用于简化 JDBC 编程,使数据库操作更加便捷和高效。在本文中,我们将重点介绍如何使用 JDBCTemplate 执行 DML(Data Manipulation Language)语句,包括插入、更新…

2019款保时捷卡宴车发动机故障灯异常点亮

故障现象 一辆2019款保时捷卡宴车,搭载DCB发动机,累计行驶里程约为9万km。车主反映,该车行驶中发动机故障灯偶尔异常点亮(图1),其他无异常,为此在其他维修厂更换过燃油箱通风电磁阀、活性炭罐及…

微软AD身份增强方案,让IT运维省心更高效

Windows AD域为企业数字化办公提供了强有力的支撑,但由于互联网技术的飞速发展,AD域在现代企业办公场景中也面临了一些挑战。 某企业使用AD域控管理工具,在对接邮箱、电脑、网络时均会用到AD域账号。出于安全考虑,公司要求每三个月…

深圳市重点实验室申报条件-华夏泰科

深圳市重点实验室是一个致力于科学研究和技术创新的重要机构。作为中国科技创新的重要一环,深圳市重点实验室在多个领域展开前沿研究,并为科学家、工程师和创新者提供了宝贵的资源和支持。、在接下来的内容中,华夏泰科将为您说明深圳市重点实…

口袋参谋:如何提升宝贝流量?这三种方法超实用!

​你的店铺能不能出爆款?提升单品流量是关键。 对于新手卖家来说,是缺乏运营技巧和运营经验的,运营技巧主要体现在标题写作、各种图片和视频制作等。 由于新手买家没有经验,习惯于直接使用数据包上传,导致宝贝没有展…

深入探究 C++ 编程中的资源泄漏问题

目录 1、GDI对象泄漏 1.1、何为GDI资源泄漏? 1.2、使用GDIView工具排查GDI对象泄漏 1.3、有时可能需要结合其他方法去排查 1.4、如何保证没有GDI对象泄漏? 2、进程句柄泄漏 2.1、何为进程句柄泄漏? 2.2、创建线程时的线程句柄泄漏 …

微信CRM系统:微商不可或缺的客户管理利器!

在这个竞争激烈的时代,微信客户已成为微商生存和发展的关键。如何更好地了解客户需求,提高客户满意度和忠诚度,已成为微商们亟待解决的问题。而解决这些问题,关键在于个微是否有一套完善的客户关系管理(CRM&#xff09…

【面试】C/C++面试八股

C/C面试八股 编译过程的四个阶段C和C语言的区别简单介绍一下三大特性多态的实现原理虚函数的构成原理虚函数的调用原理虚表指针在什么地方进行初始化的?构造函数为什么不能是虚函数为什么建议将析构函数设为虚函数虚函数和纯虚函数的区别抽象类类对象的对象模型内存…

【Vue面试题一】、说说你对 Vue 的理解

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:有使用过vue吗&#xff…

小谈设计模式(22)—单例模式

小谈设计模式(22)—单例模式 专栏介绍专栏地址专栏介绍 单例模式点睛所在优缺点分析优点确保只有一个实例全局访问点节省资源线程安全 缺点难以扩展对象的生命周期单一职责原则隐藏依赖关系 Java程序实例实例a分析实例b,更安全分析优化 ——“…

多目标优化两种算法:加权、智能优化算法

传统数学优化算法(加权) 使用数学优化算法解决多目标优化问题通常是将各个子目标聚合成一个带权重的单目标函数,系数由决策者决定,或者由优化方法自适应调整。即通过加权等方式将多目标问题转化为单目标问题进行求解。 这样每次只…

开源联合、聚力共赢丨2023 CCF中国开源大会会议通知(第二轮)

会议简介 2023 CCF中国开源大会(CCF ChinaOSC)拟于2023年10月21日至22日在湖南省长沙市北辰国际会议中心召开。大会由中国计算机学会(CCF)与开放原子开源基金会主办,CCF开源发展委员会、湖南先进技术研究院承办&#…

VR模拟鸡胚培养接种实验,打造沉浸式的学习环境

在医学教育领域,传统的鸡胚接种实验一直是教学的重要组成部分。然而,这种实验方法存在一定的局限性,如操作难度大、成本高、安全隐患等。为了解决这些问题,越来越多的教育机构开始尝试引入虚拟现实(VR)技术,以模拟鸡胚…

2023腾讯云轻量应用服务器和普通服务器有什么区别?

腾讯云轻量服务器和云服务器有什么区别?为什么轻量应用服务器价格便宜?是因为轻量服务器CPU内存性能比云服务器CVM性能差吗?轻量应用服务器适合中小企业或个人开发者搭建企业官网、博客论坛、微信小程序或开发测试环境,云服务器CV…

VUE3照本宣科——响应式与生命周期钩子

VUE3照本宣科——响应式与生命周期钩子 VUE3照本宣科系列导航 前言一、响应式1.ref()2.reactive()3.computed()4.watch()5.代码演示 二、defineProps() 和 defineEmits()三、生命周期钩子1.onMounted()2.onUpdated()3.onUnmounted()4.onBeforeMount()5.onBeforeUpdate()6.onBef…

协议转换的利器!钡铼技术BL124CK网关助您实现CC-LINK到Ethernet/IP的无缝连接

在工业自动化领域,各种设备和传感器之间的互联互通至关重要。然而,不同设备常常使用不同的通信协议,导致数据交换和控制变得复杂。为了解决这一问题,钡铼技术推出了一款创新的设备——BL124CK网关,实现了CC-LINK到Ethe…

文件服务器审核

数据是所有组织的命脉,保护存储此重要资产的存储库对于防止不必要的暴露、盗窃和丢失至关重要,管理员和数据所有者应增强其文件服务器安全性、满足合规性要求等。 文件服务器审核工具 使用 DataSecurity Plus 无缝监控、警报和报告跨 Windows 文件服务…