力扣543. 二叉树的直径(java DFS解法)

Problem: 543. 二叉树的直径

文章目录

  • 题目描述
  • 思路
  • 解题方法
  • 复杂度
  • Code

题目描述

给你一棵二叉树的根节点,返回该树的 直径 。
二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。
两节点之间路径的 长度 由它们之间边数表示。
在这里插入图片描述在这里插入图片描述

思路

本题目要求我们求取二叉树中最长的路径,可将其按递归的思想分解成的最小子问题如下:

1.求取左子树的最长路径
2.求取右子树的最长路径
3.合并求取树的最长路径

解题方法

1.定义成员变量result记录最长“直径”
2.编写递归代码,依次得到左右子树的最长“直径”
3.将左右子树的最长“直径”合并得到当前的最长“直径”,并与result比较更新
4.在归的过程中返回当前左右子树的最长路径加一(因为此时要回退到上一个节点,所以要加一!!!)

复杂度

时间复杂度:

O ( n ) O(n) O(n)

空间复杂度:

O ( h ) O(h) O(h) h h h为树的高度

Code

/*** 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 {//Recode the longest diameterprivate int result = 0;/*** Gets the path length between any two nodes of a tree** @param root The root node of a tree* @return int*/public int diameterOfBinaryTree(TreeNode root) {claMaxHeight(root);return result;}/*** Recursively gets the longest path containing the root node** @param root The root node of a tree* @return int*/public int claMaxHeight(TreeNode root) {if (root == null) {return 0;}//Gets the longest path of the left and right subtreeint maxLeftHeight = claMaxHeight(root.left);int maxRightHeight = claMaxHeight(root.right);//Get the longest path("diameter")int diameter = maxLeftHeight + maxRightHeight;//Update the longest path("diameter")if (diameter > result) {result = diameter;}return Math.max(maxLeftHeight, maxRightHeight) + 1;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OGG实现Oracle19C到postgreSQL14的实时同步

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

人工智能算法

人工智能算法包括以下几类: 机器学习算法:这些算法利用数据和统计技术让计算机学习并改善其性能,包括监督学习、无监督学习和强化学习。 典型算法: 监督学习:线性回归、决策树、支持向量机(SVM)…

用户帐户限制(例如,时间限制)会阳止你登录。请与系统管理员或技术支持联系以获取帮助

出现的问题 用户帐户限制(例如,时间限制)会阳止你登录。请与系统管理员或技术支持联系以获取帮助 2.解决方法 使用WINR召唤出运行,然后输入secpol.msc,然后点击回车键,进入本地安全策略,在左边栏中找到本地策略,再…

TextCNN文本分类快速上手

这里写目录标题 TextCNN介绍:Docker从0安装Docker基于镜像安装容器打包操作(生成镜像时使用的命令)安装时命令 页面访问模型训练API访问性能测试其他查看显卡信息 TextCNN介绍: 1.支持语义识别和分类置信度输出。 2.训练速度快&…

HNU-公共钥匙盒

【问题描述】 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家。每次老师上课前,都从公共钥匙盒里找到自己上课的教室的钥匙去开门,上完课后,再将钥匙放回到钥…

在动态时代引领软件领导地位

在职业追求领域,存在一种常见的误解,认为管理软件开发类似于骑自行车——一种静态技能,一旦获得,只需极少的调整就可以平稳地向前推进。然而,在快速发展的技术领域,这种比较不仅过于简单化,而且…

如何设计适合数字化转型需要的数据架构

现代组织需要一个模块化的数据架构来支持复杂的企业环境,同时为业务用户提供数据访问。以下是一些关键考虑因素。 一重视元数据的管理 数据架构不断发展以提供由元数据支持的数据自助服务 过去几十年来,数据分析架构最佳实践已经经历了多个时代&#…

linux服务器环境搭建(使用yum 安装mysql、jdk、redis)

一:yum的安装 1:下载yum安装包并解压 wget http://yum.baseurl.org/download/3.2/yum-3.2.28.tar.gz tar xvf yum-3.2.28.tar.gz 2.进入yum-3.2.28文件夹中进行安装,执行安装指令 cd yum-3.2.28 sudo apt install yum 3.更新版本 yum check-update yum update yum cle…

【算法思考记录】力扣2653. 滑动子数组的美丽值【C++,滑动窗口】

Problem: 2653. 滑动子数组的美丽值 滑动子数组的美丽值 问题描述 给定一个长度为 n 的整数数组 nums,我们需要计算每个长度为 k 的子数组的美丽值。 美丽值的定义如下:如果子数组中第 x 小的整数是负数,那么美丽值为第 x 小的数&#xff…

基于微博的信息热度评价与预测分析

摘 要 微博已成为时下非常热门的社交媒体平台,是一个庞大的关于信息分享和话题交流的平台,在人们线上社交活动中发挥着不可替代的作用,由于网络信息鱼龙混杂,所以本文通过了解微博的热度机制进而研究微博热度和预测微博的热门程度…

WebGL开发数据可视化应用

WebGL 是一种强大的图形渲染技术,用于在浏览器中创建高性能的交互式数据可视化应用。以下是开发这类应用的一般技术方案,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.WebGL 框架&…

CRM实战:如何对商机阶段进行有效管理

对企业来说,管理客户的多个需求对于开发新的商机至关重要。一旦发现客户有多个需求,我们可以在客户信息表中建立相应数量的商机,这样有助于系统化地进行跟进,达到商机利用的最大化。那么,CRM系统如何进行企业的商机阶段…

SSL证书认证对搜索引擎有影响吗?

SSL证书认证对搜索引擎的影响是很大的。搜索引擎是用户获取网页信息的重要途径,它们会考虑网站的可信度和安全性等因素来为用户提供更好的搜索结果。而SSL证书认证可以提高网站的可信度和安全性,从而对搜索引擎优化和排名产生积极的影响。 首先&#xff…

C# 序列化+Base64加密、解密

一、保存到文件//将对象序列化成Json字符串(明文)string json System.Text.Json.JsonSerializer.Serialize(configModel);//将Json明文字符进行Base64加密byte[] jsonBytes Encoding.UTF8.GetBytes(json);string b64Str Convert.ToBase64String(jsonBytes);//写入文件File.W…

C语言二叉树的基本概念(一)

目录 二叉树 二叉树的分类(目前只谈两种) 满二叉树 完全二叉树 二叉树的性质(其余的可以自己总结) 选择练习 二叉树的存储结构 顺序存储方式 链式存储方式 二叉树 定义:二叉树是一种特殊的树状数据结构&…

前端漏洞--front(系统有user1/user1,admin1/admin1两个用户)

任务一:挖掘反射型XSS漏洞(以弹窗test13)证明 任务二:复现环境中的CSRF漏洞,设计表单,当管理员点击URL后自动将自己密码重置为:123456 任务三:复现环境中的JSON Hijacking漏洞&#…

电容、电感和电阻

一、电感 1)图片 2)作用 a)储存容量 例如dcdc转换器的原理,将一个电压值转换成另外一个电压值 b)选择信号 比如空气中弥漫着很多信号,我们应该怎么选取我们所需要的信号。 电感和电容可以看成一个电阻,当电…

35、AD模数转换DA数模转换

AD模数转换 main.c #include <REGX52.H> #include "Delay.h" #include "LCD1602.h" #include "XPT2046.h"unsigned int ADValue;void main(void) {LCD_Init();LCD_ShowString(1,1,"ADJ NTC GR");while(1){ADValueXPT2046_Re…

CRM管理系统:让你的业务运行更流畅

是客户关系管理系统的缩写。现代企业利用网络技术协调企业和客户之间在销售和服务上的对接&#xff0c;提升企业核心竞争力的一种手段。那么CRM管理系统一般包含哪些功能模块呢&#xff1f;今天小编为大家介绍一下。 一、好的CRM管理系统有哪些功能特性 1、有全方位的客户视图…

2024年甘肃省职业院校技能大赛(中职教师组)网络安全竞赛样题卷④

2024年甘肃省职业院校技能大赛&#xff08;中职教师组&#xff09;网络安全竞赛样题卷④ 2024年甘肃省职业院校技能大赛&#xff08;中职教师组&#xff09;网络安全竞赛样题卷④A模块基础设施设置/安全加固&#xff08;本模块200分&#xff09;A-1任务一 登录安全加固&#xf…