106. 从中序与后序遍历序列构造二叉树
https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/description/?envType=study-plan-v2&envId=top-interview-150
思路:我们知道后序的顺序是左右根,所以后序数组的最后一个一定是根节点,然后中序是左根右,我们就可以拿着找到的根节点将中序分为两部分,这两部分分别是左子树和右子树,我们可以得到左右子树的节点个数,这样我们就可以在后序数组中找到对应的部分,然后对每部分分别执行上述操作。
class Solution {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;}}public TreeNode buildTree(int[] inorder, int[] postorder) {if(inorder.length == 0 || postorder.length == 0)return null;return method(inorder, postorder, 0, inorder.length - 1, 0, postorder.length - 1);}public TreeNode method(int[] inorder, int[] postorder, int inorderStart, int inorderEnd, int postorderStart, int postorderEnd) {// 找到传入部分的根节点TreeNode node = new TreeNode(postorder[postorderEnd]);// 只有一个节点的时候返回if(inorderStart == inorderEnd) {return node;}int inorderNextStart_L = 0, inorderNextEnd_L = 0; // 当前节点的左子树在中序中的下标范围int inorderNextStart_R = 0, inorderNextEnd_R = 0; // 当前节点的右子树在中序中的下标范围int postorderNextStart_L = 0, postorderNextEnd_L = 0; // 当前节点的左子树在后序中的下标范围int postorderNextStart_R = 0, postorderNextEnd_R = 0; // 当前节点的右子树在后序中的下标范围// 找到根节点在中序中的位置for(int i = inorderStart; i <= inorderEnd; i++) {if(inorder[i] == postorder[postorderEnd]) {inorderNextStart_L = inorderStart;inorderNextEnd_L = i - 1;inorderNextStart_R = i + 1;inorderNextEnd_R = inorderEnd;break;}}// 找到右子树在后序中的下标范围(因为右子树靠近根,我们可以通过长度直接得到范围)int rightTreeSize = inorderNextEnd_R - inorderNextStart_R + 1;postorderNextEnd_R = postorderEnd - 1;postorderNextStart_R = postorderNextEnd_R - rightTreeSize + 1;postorderNextStart_L = postorderStart;postorderNextEnd_L = postorderNextStart_R - 1;//传入左子树部分(注意范围,不要越界)if(check(inorderNextEnd_L, inorderStart, inorderEnd) && check(inorderNextStart_L, inorderStart, inorderEnd) && check(postorderNextEnd_L, postorderStart, postorderEnd) && check(postorderNextStart_L, postorderStart, postorderEnd))node.left = method(inorder, postorder, inorderNextStart_L, inorderNextEnd_L, postorderNextStart_L, postorderNextEnd_L);//传入右子树部分if(check(inorderNextEnd_R, inorderStart, inorderEnd) && check(inorderNextStart_R, inorderStart, inorderEnd) && check(postorderNextEnd_R, postorderStart, postorderEnd) && check(postorderNextStart_R, postorderStart, postorderEnd))node.right = method(inorder, postorder, inorderNextStart_R, inorderNextEnd_R, postorderNextStart_R, postorderNextEnd_R);return node;}public boolean check(int x, int l, int r) {return x >= l && x <= r;}public static void main(String[] args) {int[] inorder = {2,1};int[] postorder = {2,1};new Solution().buildTree(inorder, postorder);}
}
相关文章:
106. 从中序与后序遍历序列构造二叉树
https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/description/?envTypestudy-plan-v2&envIdtop-interview-150思路:我们知道后序的顺序是左右根,所以后序数组的最后一个一定是根节点,然后中序…...
全链路压测实战指南:从理论到高可用架构的终极验证
全链路压测实战指南:从理论到高可用架构的终极验证 引言:你的系统,真的准备好迎接洪峰了吗? 凌晨3点,某大型电商平台秒杀活动突袭上线。百万用户同时涌入,订单接口响应时间从200ms飙升到15秒,数据库连接池被瞬间耗尽,支付服务直接“熔断”,连锁反应导致库存混乱、物流…...
分布式AI推理的成功之道
随着AI模型逐渐成为企业运营的核心支柱,实时推理已成为推动这一转型的关键引擎。市场对即时、可决策的AI洞察需求激增,而AI代理——正迅速成为推理技术的前沿——即将迎来爆发式普及。德勤预测,到2027年,超半数采用生成式AI的企业…...
纯前端实现基于位置的天气和动态背景图片
如何为博客首页实现基于位置的天气和动态背景图片 引言 我为我的博客主页添加了根据用户所在位置显示当地天气、日出日落时间,并加载一张与天气和时间段匹配的高质量背景图片,可以显著提升用户体验。想象晴天时展示阳光普照的田野,雨天时呈现…...
1.1 认识编程与C++
认识编程与C教程 目标 理解程序、指令、数据的概念。了解C在现实中的应用场景。学会搭建编程环境,迈出第一步。 一、编程是什么?——给计算机写“魔法指令” 1. 基本概念 程序:一系列指令的集合,像一本“魔法食谱”。 &#x…...
代码随想录算法训练营第60期第三十七天打卡
大家好,今天我们算法训练营的第37天,首先为自己感到骄傲,居然坚持下来了,本来觉得自己可能坚持不下来,但是我硬是坚持下来了,好样的,同时也感谢那些看我的题解给我点赞的朋友,我在这…...
每周靶点:TIGIT、ICAM1及文献分享
本期精选了《抑制性受体TIGIT》《细胞粘附分子ICAM1》《真核蛋白表达:选择合适的条件进行》《文献分享:双特异性和多特异性抗体的可开发性评估》四篇文章。以下为各研究内容的概述: 抑制性受体TIGIT TIGIT是一种具有Ig和ITIM结构域的T细胞免…...
介绍一下什么是 AI、 AGI、 ASI
1. AI(人工智能):工具化的“窄域智能” 定义: AI 是能够执行特定任务的智能系统,依赖大量数据和预设规则,缺乏自主意识和跨领域通用性。 特点: 任务专用:如图像识…...
部署安装jenkins.war(2.508)
实验目的:部署jenkins,并与gitlab关联bulid 所需软件:jdk-17_linux-x64_bin.tar.gz jenkins.war apache-tomcat-10.1.40.tar.gz 实验主机:8.10具有java环境,内存最少为4G,cpu双核 目录 jdk安装 …...
【歌曲结构】2:小节与歌曲结构信息整合
歌曲小节与结构信息整合 我将为您整合小节信息与歌曲结构,创建一个更加详细的JSON数据结构。 处理方法 将小节时间与歌曲结构段落进行匹配为每个小节添加所属段落信息为小节添加格式化的时间戳为小节添加对应时间范围内的歌词{"song_title": "财神庙前许三亿…...
商城系统前端
商城系统的前端技术涉及多个层面的技术选型与架构设计,结合搜索结果中的信息,以下是商城系统前端技术的核心要点及实现方案: 一、基础技术栈 HTML5 & CSS3 功能定位:作为前端开发的基础,…...
OpenSSH 漏洞-SSH 服务器面临 MitM 攻击和拒绝服务攻击的风险
OpenSSH 发布了安全更新,修复了两个漏洞,一个是 MitM 攻击漏洞,另一个是拒绝服务漏洞,其中一个漏洞是在十多年前引入的。Qualys 发现了这两个漏洞,并向 OpenSSH 的维护人员展示了其可利用性。 OpenSSH(开放…...
PostgreSQL MCP 使用案例
## 概述 PostgreSQL MCP(PostgreSQL Multi-host Cluster Provisioning)是一种用于部署和管理多节点PostgreSQL集群的工具和架构。它提供了高效的数据库集群管理、高可用性保障和负载均衡功能。本文档将介绍PostgreSQL MCP的基本使用方法和常见应用场景。…...
什么是接口文档,如何使用,注意事项有哪些
一、接口文档的核心内容 基础信息 接口名称:明确功能(如“用户登录接口”)。 接口地址:URL 或 RPC 路径(如 /api/v1/login)。 请求方法:HTTP 方法(GET/POST/PUT/DELETE)…...
Swagger go中文版本手册
Swaggo(github.com/swaggo/swag)的注解语法是基于 OpenAPI 2.0 (以前称为 Swagger 2.0) 规范的,并添加了一些自己的约定。 主要官方文档: swaggo/swag GitHub 仓库: 这是最权威的来源。 链接: https://github.com/swaggo/swag重点关注: README.md: 包含了基本的安装、使用…...
[Java实战]Spring Boot + Netty 实现 TCP 长连接客户端及 RESTful 请求转发(二十六)
[Java实战]Spring Boot Netty 实现 TCP 长连接客户端及 RESTful 请求转发(二十六) 在现代微服务架构中,经常需要在不同服务之间进行高效、可靠的通信。本文将介绍如何使用 Spring Boot 结合 Netty 实现一个 TCP 长连接客户端,并…...
ProfibusDP主站转ModbusRTU/TCP与横河AXG电磁流量计通讯案例
ProfibusDP主站转ModbusRTU/TCP与横河AXG电磁流量计通讯案例 在当今数字化工业时代,智能仪表与控制系统的互联互通成为提高生产效率和管理水平的关键。横河AXG电磁流量计作为一款高性能的流量测量设备,在多个行业得到了广泛应用。而Profibus DP作为一种…...
鸿蒙OSUniApp开发的商品详情展示页面(鸿蒙系统适配版)#三方框架 #Uniapp
使用UniApp开发的商品详情展示页面(鸿蒙系统适配版) 前言 随着移动电商的普及,一个体验良好的商品详情页对于提高用户转化率至关重要。本文将分享我在使用UniApp开发商品详情页时的实践经验,并特别关注如何适配鸿蒙系统…...
VMware中快速安装与优化Ubuntu全攻略
准备工作 在开始安装之前,确保已经下载了VMware Workstation或VMware Player,并准备好Ubuntu的ISO镜像文件。VMware Workstation是一款功能强大的虚拟机软件,支持在Windows或Linux主机上运行多个操作系统。 创建虚拟机 打开VMware Worksta…...
本地 PC 使用Offset Explorer连接实体Ubuntu Kafka 【单机】超时问题解决
现状:本地 PC 使用Offset Explorer连接实体Ubuntu Kafka 超时 一、确认kafka是否在9092端口上运行 netstat -tulnp | grep 9092输出 tcp6 0 0 :::9092 :::* LISTEN 66113/java 使用jps查看进程66113的详细信息…...
CSS AI 通义灵码 VSCode插件安装与功能详解
简介 在前端开发领域,页面调试一直是个繁琐的过程,而传统开发中美工与前端的对接也常常出现问题。如今,阿里云技术团队推出的通义灵码智能编码助手,为前端开发者带来了新的解决方案,让开发者可以像指挥者一样…...
MUSE Pi Pro 使用TiTanTools烧录镜像
视频讲解: MUSE Pi Pro 使用TiTanTools烧录镜像 下载windows下的烧录工具 https://cloud.spacemit.com/prod-api/release/download/tools?tokentitantools_for_windows_X86_X64 下载镜像文件,zip后缀的即可 打开软件默认界面 按住FDL键,同时…...
嵌软面试每日一阅----通信协议篇(二)之TCP
一. TCP和UDP的区别 可靠性 TCP:✅ 可靠传输(三次握手 重传机制) UDP:❌ 不可靠(可能丢包) 连接方式 TCP:面向连接(需建立/断开连接) UDP:无连接࿰…...
开机自启动python程序_ubuntu22.04
一、没有设置开机自启动时 1、 conda activate yolo cd /home/orangepi/work_11.15/zipformer 2、 python app.py 二、设置开机自启动流程 1、新建一个文件.service文件 touch zipformer.service 2、最重要的找到你自己的环境路径 这个是我的 yolo的虚拟环境在ÿ…...
8、SpringBoot集成MinIO
8、SpringBoot集成MinIO https://xiaoxueblog.com/ai/SpringBoot%E9%9B%86%E6%88%90MinIO.html 1、pom <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.12</version> </dependency>2…...
LeRobot 框架的核心架构概念和组件(下)
本文档概述构成 LeRobot 框架的核心架构概念和组件。它介绍主要的子系统,并解释它们如何相互作用以实现机器人学习。 。。。。。。继续。。。。。。 机器人控制系统 机器人控制系统提供统一的接口来控制实体机器人。它支持不同的控制模式和机器人类型,…...
ubuntu18 设置静态ip
百度 编辑/etc/netplan/01-netcfg.yaml 系统没有就自己编写 network: version: 2 renderer: networkd ethernets: eth0: dhcp4: no addresses: [192.168.20.8/24] # 设置你的IP地址和子网掩码 gateway4: 192.168.20.1 # 网关地址 namese…...
QML元素 - ThresholdMask
QML 的 ThresholdMask 用于根据阈值将源元素与遮罩元素的像素值进行比较,通过设定阈值范围来控制源元素的可见区域。它适用于基于亮度、透明度或颜色通道的动态遮罩效果,例如游戏中的血条、进度指示器或图像处理中的抠图。以下是详细使用技巧和场景示例&…...
[项目深挖]仿muduo库的并发服务器的解析与优化方案
标题:[项目深挖]仿muduo库的并发服务器的优化方案 水墨不写bug 文章目录 一、buffer 模块(1)线性缓冲区直接扩容---->环形缓冲区定时扩容(只会扩容一次)(2)使用双缓冲(Double Buf…...
(独家)SAP CO模块中 销售发票对应的Cost Document中的PSG对象是什么东东??
背景: 在销售发票生成的凭证中,控制凭证有两个字段:对象类型、对应编码;那这个PSG到底是什么东东?网上一直没人解释,可能没人研究过这个问题。 官方解释: 按我的理解,PSG profile …...
流程编辑器Bpmn与LogicFlow学习
工作流技术如何与用户交互结合(如动态表单、任务分配)处理过 XML 与 JSON 的转换自定义过 bpmn.js 的样式(如修改节点颜色、形状、图标)扩展过上下文菜单(Palette)或属性面板(Properties Panel&…...
群晖NAS部署PlaylistDL音乐下载器结合cpolar搭建私有云音乐库
文章目录 前言1.关于PlaylistDL音乐下载器2.Docker部署3.PlaylistDL简单使用4.群晖安装Cpolar工具5.创建PlaylistDL音乐下载器的公网地址6.配置固定公网地址总结 前言 各位小伙伴们,你们是不是经常为了听几首歌而开通各种平台的VIP?或者为了下载无损音质…...
Unity光照笔记
问题 在做项目中遇到了播放中切换场景后地面阴影是纯黑的问题,不得不研究一下光照。先放出官方文档。 Lighting 窗口 - Unity 手册 播放中切换场景后地面阴影是纯黑 只有投到地面的阴影是纯黑的。且跳转到使用相同Terrain的场景没有问题。 相关文章:…...
【ROS2】编译Qt实现的库,然后链接该库时,报错:/usr/bin/ld: XXX undefined reference to `vtable for
1、问题描述 在ROS2工程中,编译使用Qt实现的库,在其它ROS2包链接该库时,报错: /usr/bin/ld: XXX undefined reference to `vtable for2、原因分析 查看链接失败的几个函数接口都是,信号函数(signals 标记的函数)。因为信号函数都只有定义,没有实现,在执行ROS2 colc…...
deepseek讲解如何快速解决内存泄露,内存溢出问题
Java内存泄漏与内存溢出解决方案及预防措施 作为Java架构师,处理内存泄漏和内存溢出问题需要系统性的方法。以下是一份完整的解决方案和预防建议: 一、问题诊断阶段 1. 确认内存泄漏现象 监控GC日志,观察老年代使用率是否持续增长使用jst…...
双系统重装ubuntu
双系统ubuntu20.04重装(详细版)_ubuntu20.04安装教程-CSDN博客...
图形语言中间层:重构 AI 编程的未来之路
在软件开发的历史长河中,每一次技术革新都伴随着对效率与可控性的重新定义。当 ChatGPT、GitHub Copilot 等 AI 工具以自然语言生成代码的惊艳表现叩响编程世界的大门时,人们曾满怀憧憬地期待一个 “无代码” 的黄金时代 —— 只需用日常语言描述需求&am…...
Ubuntu操作合集
UFWUncomplicated Firewall 查看状态和规则: 1查看状态sudo ufw status, 2查看详细信息sudo ufw status verbose, 默认策略配置: 1拒绝所有入站sudo ufw default deny incoming 2允许所有出战sudo ufw default allow outgoing …...
张量与Python标量:核心区别与计算图断开解析
张量与Python标量的核心区别 张量(Tensor) 是PyTorch中的核心数据结构,类似于多维数组: 支持GPU加速计算跟踪计算历史(用于自动求导)可以包含多个元素Python标量(int/float) 是普通的Python数值类型: 不支持GPU加速没有计算历史记录单个独立数值计算图断开的原因 Py…...
U9C与钉钉审批流对接完整过程
U9C 功能强大,然而在移动办公和审批流方面存在一定不足。为了弥补这一缺陷,不少企业在使用 U9C 的同时,会选择开通钉钉这类 OA 管理系统。不过,两套系统并行使用时,数据同步问题便随之而来。目前,常见的做法…...
双重差分模型学习笔记4(理论)
【DID最全总结】90分钟带你速通双重差分!_哔哩哔哩_bilibili 目录 总结:双重差分法(DID)在社会科学中的应用:理论、发展与前沿分析 一、DID的基本原理与核心思想 二、经典DID:标准模型与应用案例 三、…...
【Pandas】pandas DataFrame diff
Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...
什么是Agentic AI(代理型人工智能)?
什么是Agentic AI(代理型人工智能)? 一、概述 Agentic AI(代理型人工智能)是一类具备自主决策、目标导向性与持续行动能力的人工智能系统。与传统AI系统依赖外部输入和显式命令不同,Agentic AI在设定目标…...
记录算法笔记(2025.5.15)二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2: 输入…...
2025 Java 微信小程序根据code获取openid,二次code获取手机号【工具类】拿来就用
一、controller调用 /*** 登录** author jiaketao* since 2024-04-10*/ RestController RequestMapping("/login") public class LoginController {/*** 【小程序】登录获取session_key和openid** param code 前端传code* return*/GetMapping("/getWXSessionKe…...
2021-10-25 C++三的倍数含五
缘由含数字五且是三的倍数-编程语言-CSDN问答 void 三的倍数含五() {//缘由https://ask.csdn.net/questions/7544132?spm1005.2025.3001.5141int a 3, aa a;while (a < 10000){if (aa)if (aa % 10 5)std::cout << a << std::ends, aa a 3; else aa / 10;…...
编程日志5.8
二叉树练习题 1.965. 单值二叉树 - 力扣(LeetCode) /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) :…...
Vue.js---避免无限递归循环 调度执行
4.4 避免无限递归循环 什么情况下会无限递归? 01 const data { foo: 1 } 02 const obj new Proxy(data, { /*...*/ }) 03 04 effect(() > obj.foo)例如这种情况,它会反复设置添加一直到栈溢出 首先读取obj.foo 的值,这会触发 track 操…...
AI大模型学习二十四、实践QEMU-KVM 虚拟化:ubuntu server 25.04 下云镜像创建Ubuntu 虚拟机
一、说明 虽然说大部分的场合,docker都能解决问题,但是有些大型的软件安装时如果修改配置会很麻烦,比方说前面遇到的code-server和dify 默认都是80和443端口要使用,安装在一起就会端口冲突,通过该端口来解决问题&#…...
Lovart:首个AI设计智能体
今天介绍一款AI设计智能体——Lovart,能调用各种绘画API和视频API,也能调用LibLib上的Flux和LoRA,并且智能体的编排效果确实很好,产出效果比豆包和ChatGPT都好,可以说没有竞品。视频为效果演示,官网有更多案…...