LeetCode543题:二叉树的直径(python3)

代码思路:
先递归调用左儿子和右儿子求得它们为根的子树的深度 L和 R ,则该节点为根的子树的深度即为max(L,R)+1。该节点的 dnode值为L+R+1
递归搜索每个节点并设一个全局变量 ans记录 dnode的最大值,最后返回 ans-1 即为树的直径。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:self.ans = 1def depth(node):# 访问到空节点了,返回0if not node: return 0 # 左儿子为根的子树的深度L = depth(node.left) # 右儿子为根的子树的深度R = depth(node.right)# 计算d_node即L+R+1 并更新ansself.ans = max(self.ans,L+R+1)# 返回该节点为根的子树的深度return max(L,R)+1 depth(root)return self.ans-1相关文章:
LeetCode543题:二叉树的直径(python3)
代码思路: 先递归调用左儿子和右儿子求得它们为根的子树的深度 L和 R ,则该节点为根的子树的深度即为max(L,R)1。该节点的 dnode值为LR1 递归搜索每个节点并设一个全局变量 ans记录 dnode的最大值,最后返回 ans-1 即为树的直径。 # Definit…...
zabbix 7.0编译部署教程
zabbix 7.0编译部署教程 2024-03-08 16:50乐维社区 zabbix7.0 alpha版本、beta版本已经陆续发布,Zabbix7.0 LTS版本发布时间也越来越近。据了解,新的版本在性能提升、架构优化等新功能方面有非常亮眼的表现,不少小伙伴对此也已经跃跃欲试。心…...
Oracle Linux 8.9 安装 Python 3.11.8 和 Miniconda
Oracle Linux 8.9 安装 Python 3.11.8 和 Miniconda 1. 安装 Python 3.11.82. 安装 Miniconda 1. 安装 Python 3.11.8 Update system, sudo dnf update -yInstall Library, sudo dnf install curl gcc openssl-devel bzip2-devel libffi-devel zlib-devel wget make git -yI…...
Docker 配置阿里云镜像加速器
一、首先需要创建一个阿里云账号 二、登录阿里云账号 三、进入控制台 四、搜索容器镜像服务,并选择 五、选择镜像工具中的镜像加速 六 、配置镜像源 注意:有/etc/docker文件夹的直接从第二个命令开始...
[Linux][CentOs][Mysql]基于Linux-CentOs7.9系统安装并配置开机自启Mysql-8.0.28数据库
目录 一、准备工作:获取安装包和相应工具 (一)所需安装包 (二)安装包下载链接 (三)在服务器上创建文件夹并上传安装包 二、安装MySql (一)删除系统自带的mariadb …...
实用指南!2024年度计划怎么写?工作学习必备!
在新的一年开始之际,制定一份详细而实用的年度计划对于实现个人和职业目标至关重要。无论是在工作、学习还是生活中,一个明确的计划可以帮助你更好地组织时间、资源和精力,从而更有效地实现目标。下面是一个关于如何写年度计划的指南…...
js的事件有哪些?
鼠标事件: 鼠标事件 触发条件 onclick 鼠标点击左键触发 oncontextmenu 鼠标点击右键触发 ondblclick 鼠标双击触发 onmouseover 鼠标经过触发 onmouseout 鼠标离开触发 onmousemove 鼠标移动触发 onmouseup 鼠标弹起触发 onmousedown 鼠标按下触发 键盘事…...
Mock.js 基本语法与应用笔记
🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…...
vue从零到一创建项目?
创建一个Vue项目通常需要经过以下步骤,从零开始构建一个基本的Vue项目: 步骤一:安装Node.js和npm 下载安装Node.js: 在Node.js官网下载适合你操作系统的Node.js安装包,并按照提示进行安装。安装完Node.js后ÿ…...
安装PyTorch详细过程
安装anaconda 登录anaconda的官网下载,anaconda是一个集成的工具软件不需要我们再次下载。anaconda官网 跳转到这个页面如果你的Python版本正好是3.8版,那便可以直接根据系统去选择自己相应的下载版本就可以了。 但是如果你的Python版本号不是当前页面…...
使用Rust开发小型搜索引擎
一、概述 用Rust创建搜索引擎是探索该语言在性能和安全性方面具有优势的绝佳方式。 这个项目将索引和搜索概念转移到Rust的生态系统中,由于Rust独特的语法和范式,这是一个挑战,但也是有益的。 二、构建搜索引擎 步骤1,创建项目…...
2024.3.13
1.顺序表去重 代码: //顺序表去重 void dele(seq_p L) {if(LNULL){printf("入参为空,请检查\n");return;}for(int i0;i<L->len-1;i){for(int ji1;j<L->len;j){if(L->data[i]L->data[j]){dele_data(L,L->data[j]);j--;}…...
schedule() , schedule_work() 以及schedule_timeout_interruptible()区别
schedule() 和 schedule_work() 是 Linux 内核中用于任务调度的两个函数,它们的作用和使用场景有所不同。 schedule() 函数: * 作用:将当前任务放入睡眠状态并调度其他可运行任务的函数。当调用 schedule() 时,当前任务会放弃 CPU…...
AWS入门实践-AWS CLI工具的使用介绍
AWS CLI(Amazon Web Services Command Line Interface)是一个强大的工具,它允许您直接从命令行与AWS服务进行交互。这不仅可以加快许多任务的处理速度,而且还可以通过脚本自动化。 一、AWS CLI工具的安装 1、Windows 安装下载…...
Xterminal:未来的终端体验
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 开发环境篇 ✨特色专栏: M…...
“光谱视界革新:ChatGPT在成像光谱遥感中的智能革命“
遥感技术主要通过卫星和飞机从远处观察和测量我们的环境,是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型,在理解和生成人类语言方面表现出了非凡的能力。本文重点介绍ChatGPT在遥感中的应用,人工智能…...
Docker Register 搭建私有镜像仓库
1 安装 docker (1)更新软件源 sudo apt update (2)安装 docker 组件 sudo apt install docker.io (3)启动 docker 服务 sudo systemctl start docker (4)设置 docker 服务开机自启动 sudo systemctl enable docker (5)验证 docker 功能 sudo docker contai…...
蓝桥杯真题讲解:三国游戏(贪心)
蓝桥杯真题讲解:三国游戏(贪心) 一、视频讲解二、正解代码 一、视频讲解 蓝桥杯真题讲解:三国游戏(贪心) 二、正解代码 //三国游戏:贪心 #include<bits/stdc.h> #define int long lon…...
docker之自己制作jdk镜像
一,下载想要制作的镜像的对应jdk(自行下载),本文使用jdk17(因为自己的springboot项目时在jdk17下开发的,悲!!!,再加上没有在官网上找到对应镜像,只…...
基于SpringBoot的农产品特色供销系统(蔬菜商城)
基于SpringBoot的农产品特色供销系统(蔬菜商城) 系统介绍 该系统使用Java、MySQL、Redis、Spring Boot和HTML等技术作为系统的技术支撑,实现了以下功能模块: (1)后台管理模块,包括权限、日志、…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
