[leetcode100] 543. 二叉树的直径
https://leetcode.cn/problems/diameter-of-binary-tree/description/?envType=study-plan-v2&envId=top-100-liked
题目描述:给一个二叉树,返回二叉树直径最大值。直径指的是二叉树中任意一个结点到另外一个结点产生路径的长度。而长度由边来代表。
思路
- 最简单的切入点是,既然要找最大值,那么这两个结点一定是叶子,根据贪心法则,如果当前区间边界不是叶子,就说明它一定有孩子结点,那他一定可以将区间拓展到他的孩子结点。所以最终的答案区间边界一定是叶子结点
- 既然答案一定是叶子结点,那么孩子结点连城路径一定会经过非叶子结点,所以遍历思路就出来了。遍历非叶子结点。
- 而答案路径很好表示,假设你选定当前这个非叶子结点作为路径通路。那么经过这个结点的最大直径,一定是左子树高度加上右子树高度。
根据上面结果整体解题思路以及大概的代码逻辑都出来了。
就是遍历一下非叶子结点,算一下左右两边子树高度,记录最大值就好了。
然后编码实际上用计算高度的递归就好了
/*** Definition for a binary tree node.* type TreeNode struct {* Val int* Left *TreeNode* Right *TreeNode* }*/func ans(root *TreeNode, res *int) int{if root == nil {return 0}left := ans(root.Left, res)right := ans(root.Right, res)tem := left + rightif tem > *res {*res = tem}if left < right {return right + 1}return left + 1
}func diameterOfBinaryTree(root *TreeNode) int {var a = 0ans(root, &a)return a
}
相关文章:
[leetcode100] 543. 二叉树的直径
https://leetcode.cn/problems/diameter-of-binary-tree/description/?envTypestudy-plan-v2&envIdtop-100-liked 题目描述:给一个二叉树,返回二叉树直径最大值。直径指的是二叉树中任意一个结点到另外一个结点产生路径的长度。而长度由边来代表。…...
嵌入式学习(18)-stm32F407串口接收空闲中断+DMA
一、概述 在一些一次性接收大批量数据的引用场合,如果使用接收中断会频繁的进入接收中断影响代码的运行效率。为了解决这个问题可以使用串口的空闲中断DMA实现。 二、应用 在网上招了一些例程在STM32F407的平台上都没有跑通会出现各种异常,主要原因还…...
b站视频爬虫-词云分析
一、设置爬虫程序 # requests 请求b站视频 import jsonimport fake_useragent import requests from lxml import etreeif __name__ == __main__:# UA伪装head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like …...
如何防止订单二次重复支付?
如何防止订单二次重复支付? 在电商平台和支付系统中,防止订单二次重复支付是一个至关重要的功能。以下是一些常见的策略和技术手段,用于确保订单支付的幂等性和一致性。 目录 唯一订单号订单状态检查数据库事务乐观锁悲观锁支付渠道状态核查…...
LeetCode 24反转链表
单链表反转:详细解析与代码实现 在数据结构的学习过程中,链表是一个非常重要且有趣的部分,而单链表的反转操作更是常考的基础知识点。今天就来和大家详细讲讲如何实现单链表的反转,并通过代码示例来加深理解呀。 题目 给定单链…...
用python的flask写的一个MQTT中转功能,http的方式发送数据和接收数据
需求背景 给一个客户对接人脸识别的设备,最后需要通知服务端进行一些消息推送。 简单例子 # 作者 陈老师 # https://v.iiar.cn import json import paho.mqtt.client as mqtt import requests from flask import Flask, requestapp Flask(__name__)# MQTT配置 mq…...
img引入svg如何修改颜色
方法1:通过css中filter:drop-shadow 首先需要一个容纳图标的父盒子(下方实例中的.svg-img),通过css造一个图标的‘影子’(.svg-color中的drop-shadow),然后设置‘影子’的颜色,再把图标本体移出父盒子&…...
计算机毕业设计PySpark+PyFlink+Hive地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Hadoop 机器学习 深度学习
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
【Python】使用Numpy实现余弦相似度计算
本文详细介绍了如何使用 NumPy 实现两个向量之间的余弦相似度计算,帮助理解向量相似度在推荐系统、文本处理等领域的应用。 1. 余弦相似度定义 余弦相似度是衡量两个向量在高维空间中夹角大小的指标,其公式为: c o s ( θ ) A ⋅ B ∥ A ∥…...
nginx中的root和alias的区别
alias 在E:\\test\\目录下创建一个index.html文件 在nginx.conf文件配置alias,路径填写为绝对路径,但是要注意,这里结尾是文件夹的名字 然后下面的/aa/ 是随便起的名字,也不是文件夹的名字,在浏览器访问的使用的 在浏览器使用 …...
探索Telnet:实现Windows远程登录Ubuntu的实践指南
前言 在互联网技术日新月异的今天,远程登录已经成为许多开发者和系统管理员日常工作中不可或缺的一部分。虽然SSH已经成为远程登录的首选协议,但了解并掌握Telnet这一经典协议仍然具有重要意义。本文将带您一起探索如何使用Telnet实现Windows远程登录Ub…...
在 Vue 2 中隐藏页面元素的方法
目录 在 Vue 2 中隐藏页面元素的方法 引言 1. 使用 v-if 指令 2. 使用 v-show 指令 3. 使用自定义类名与 v-bind:class 4. 使用内联样式与 v-bind:style 5. 使用组件的 keep-alive 和条件渲染 在 Vue 2 中隐藏页面元素的方法 引言 在开发 Web 应用时,我们经…...
【Java】Java8的4个函数式接口简单教程
什么是函数是接口? 函数式接口是一个包含 单个抽象方法 的接口,且可以有任意多个默认方法或静态方法。为了增强可读性,Java 8 引入了 FunctionalInterface 注解,用于标识该接口是一个函数式接口,编译器会帮助我们检查…...
计算机组成原理与系统结构——微程序控制
笔记内容及图片整理自XJTUSE “计算机组成原理与系统结构” 课程ppt,仅供学习交流使用,谢谢。 基本概念 微指令 将控制单元实现为基本逻辑单元之间的互连并非易事,且设计相对呆板,难以灵活地改变,因此实现微程序控制…...
【Swift】集合类型 - 数组、集合、字典
文章目录 集合的可变性数组数组类型简写语法创建空数组使用默认值创建数组通过合并两个数组创建一个新数组使用数组字面量创建数组访问和修改数组 Swift 提供了三种主要的 集合类型,分别是数组、集合和字典,用于存储值集合。数组是有序的值集合。集合是无…...
3D 视觉定位技术:汽车零部件制造的智能变革引擎
在汽车零部件制造领域,传统工艺正面临着前所未有的挑战。市场对于零部件精度与生产效率近乎苛刻的要求,促使企业寻求突破之道。而 3D 视觉定位技术,为汽车零部件制造开启了精准定位与智能化生产的新纪元。 3D 视觉定位系统的核心技术原理 3…...
操作系统的基本认识
操作系统的感性认识 操作系统这个词可能或多或少听说过,比如windows, linux, macOS。这些其实都是工程师们经过实践后的具象化产物。而操作系统原理这六个字就是操作系统的抽象化,更准确的说,操作系统原理是很理论化的东西。举一个不是很恰当…...
使用pycharm连接远程服务器
使用pycharm连接远程服务器 1.在你的项目里配置 SSH ,放到服务器上去跑 主机为服务器的IP地址,输入用户名和密码 配置项目位置、选择编译器 2.设置本地更改代码保存后即上传到服务器 在本地使用 pycharm 调试代码,pycharm 上面的代码更改…...
【Linux SH脚本】LinuxCheck 应急检查信息脚本
LinuxCheck 1.下载地址 【Linux SH脚本】LinuxCheck 应急检查信息脚本 2.简介 LinuxCheck 是一个开源的自动化检查脚本,旨在快速检测 Linux 系统的安全配置和潜在问题。它支持多种发行版,能够扫描并生成详细的报告,涵盖用户管理、权限配置…...
apifox创建一个mock接口
1、新建接口 2、选择mock,开启云端mock; 3、新建期望; 4、编辑响应体; 5、快速请求,测试; (主要可能是网络问题,也可以自己python mock一个;apifox简单快速…...
快速搭建阿里Qwen3-4B-Instruct-2507:部署步骤详解与问题排查
快速搭建阿里Qwen3-4B-Instruct-2507:部署步骤详解与问题排查 1. 模型简介与核心能力 1.1 Qwen3-4B-Instruct-2507概述 Qwen3-4B-Instruct-2507是阿里巴巴通义实验室最新推出的轻量级开源大语言模型,作为Qwen系列的重要成员,它在保持40亿参…...
RTX4090D性能实测:OpenClaw调用Qwen3-32B镜像的token消耗优化
RTX4090D性能实测:OpenClaw调用Qwen3-32B镜像的token消耗优化 1. 测试背景与设备环境 去年底入手RTX4090D显卡后,我一直想验证它在本地大模型推理场景的实际表现。最近在星图平台发现预置Qwen3-32B模型的优化镜像,正好配合OpenClaw做自动化…...
Qwen-Image-Edit保姆级教程:3步搭建本地修图神器,隐私安全有保障
Qwen-Image-Edit保姆级教程:3步搭建本地修图神器,隐私安全有保障 想要一款既能保护隐私又能快速修图的AI工具?今天给大家介绍基于阿里通义千问Qwen-Image-Edit模型的本地化修图方案,无需联网、数据不出本地,3步就能搭…...
RWKV7-1.5B-g1a惊艳效果展示:三句话解释RWKV、产品文案、要点压缩真实输出
RWKV7-1.5B-g1a惊艳效果展示:三句话解释RWKV、产品文案、要点压缩真实输出 1. 模型简介与核心能力 rwkv7-1.5B-g1a 是基于新一代 RWKV-7 架构的多语言文本生成模型,专为轻量级应用场景优化。这个1.5B参数的模型在保持高效运行的同时,展现出…...
OpenClaw定时任务:千问3.5-9B每日早报自动推送
OpenClaw定时任务:千问3.5-9B每日早报自动推送 1. 为什么需要自动化早报推送 每天早上打开电脑第一件事,就是手动收集行业新闻、技术动态和日程提醒,再整理成早报发到团队群。这种重复劳动持续三个月后,我开始思考:能…...
gallery用户留存技巧:提高本地AI平台用户的活跃度
gallery用户留存技巧:提高本地AI平台用户的活跃度 【免费下载链接】gallery A gallery that showcases on-device ML/GenAI use cases and allows people to try and use models locally. 项目地址: https://gitcode.com/GitHub_Trending/gallery44/gallery …...
resume-cli实际案例分享:成功求职者的简历配置终极指南
resume-cli实际案例分享:成功求职者的简历配置终极指南 【免费下载链接】resume-cli CLI tool to easily setup a new resume 📑 项目地址: https://gitcode.com/gh_mirrors/re/resume-cli resume-cli是一款基于JSON Resume标准的命令行工具&…...
Project Quay故障排查指南:常见问题及解决方案
Project Quay故障排查指南:常见问题及解决方案 【免费下载链接】quay Build, Store, and Distribute your Applications and Containers 项目地址: https://gitcode.com/gh_mirrors/quay/quay Project Quay是一款强大的容器镜像仓库管理工具,用于…...
gemma-3-12b-it多模态边界探索:对动态GIF首帧、视频缩略图的理解能力实测
gemma-3-12b-it多模态边界探索:对动态GIF首帧、视频缩略图的理解能力实测 1. 测试背景与目的 最近在多模态AI领域,Google推出的Gemma 3系列模型引起了广泛关注。特别是12B参数的指令调优版本gemma-3-12b-it,号称能够同时处理文本和图像输入…...
BeMusic 3.1.3音乐网站源码:打造个人专属音乐平台的完美选择
在当今数字音乐时代,拥有一个属于自己的音乐网站已成为许多音乐爱好者和开发者的梦想。BeMusic 3.1.3音乐网站源码正是实现这一梦想的理想工具。作为一个功能全面的音乐分享和流媒体平台,BeMusic允许用户在几分钟内创建专业级的音乐网站,无需…...
