class Solution {
private Map<Integer,Integer> indexMap;
public TreeNode myBulidTree(int[] preorder , int[] inorder , int preorder_left , int preorder_right , int inorder_left , int inorder_right){//preorder_left表示当前树的前序遍历数组范围,inorde_left表示当前树的中序遍历数组范围
if(preorder_left > preorder_right) return null;
int preorder_root = preorder_left;//preorder_root表示根节点在前序遍历数组中的位置
int inorder_root = indexMap.get(preorder[preorder_root]);
TreeNode root = new TreeNode(preorder[preorder_root]);
int size_left_subtree = inorder_root - inorder_left;
root.left = myBulidTree(preorder , inorder , preorder_left + 1 , preorder_left + size_left_subtree , inorder_left , inorder_root - 1);
root.right = myBulidTree(preorder , inorder , preorder_left + size_left_subtree + 1 , preorder_right , inorder_root + 1 , inorder_right);
return root;
}
public TreeNode buildTree(int[] preorder, int[] inorder) {
int n = preorder.length;
indexMap = new HashMap<>();
for(int i = 0 ; i < n ; i++){
indexMap.put(inorder[i] , i);
}
return myBulidTree(preorder , inorder , 0 , n - 1 , 0 , n -1 );
}
}
相关推荐
STM32H743玩转以太网:不用FreeRTOS,手把手搞定LAN8742和DHCP(附MPU配置避坑指南)
本文详细介绍了在STM32H743裸机环境下实现以太网通信的完整方案,重点讲解了LAN8742 PHY芯片的配置和DHCP自动获取IP的实现。通过CubeMX配置、内存布局优化和MPU设置,避开了H7系列常见的Cache陷阱,提供了无操作系统环境下的高效网络通信解决方案。
leetcode-剑指offer-07:重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 解题思路 前序遍历的第一个值为根结点,在中序遍历中找到该值的下标 中序遍历该值左边为根结点左子树,右边为根结点右子树 前序遍历从第一个节点往后数 与中序遍历左子树相同个数的节点,为左子树 本轮分析得到根结点,以及左子树,右子树的值 递归即可得到整个树 代码实现 /** * Definition for a binary tree node. * type TreeNode str
别再死记硬背了!用Amesim HCD库亲手搭建单向阀、锥阀、球阀模型(附详细参数设置)
本文详细介绍了如何使用Amesim HCD库从零构建单向阀、锥阀和球阀的仿真模型,帮助工程师摆脱死记硬背,掌握物理建模的核心技巧。通过实战案例和参数设置指南,读者将学会如何优化阀门动态响应、验证流量特性以及处理旋转运动等独特挑战,提升液压系统设计效率。
2.二叉树
226-翻转二叉树 将每个节点的左右节点进行交换就得到了翻转的二叉树 public static TreeNode reverseTreeDeep(TreeNode treeNode){ if(treeNode==null)return null;//递归的终止条件 //这里是放在了前序遍历的位置,也可以放在后序,放在中序遍历位置是不行的 TreeNode temp=treeNode.left; treeNode.left=.
STM32F4_DHT11数字温湿度传感器
开机的时候先检测是否有DHT11存在,如果没有,则提示错误。DHT11和DS18B20相同,传感器输出的都是未编码的二进制数字。本节我们将利用STM32F4来读取DHT11的温湿度传感器,获取环境的温度和湿度值。因此:温湿度的读取方式就是整数部分的二进制转换成十进制放在整数部分;小数部分的二进制转换成十进制放在小数部分。DHT11和MCU的一次通讯时间最大3ms,主机连续向DHT11采样的间隔建议不小于100ms。DHT11是广州奥松有限公司生产的一款温湿度一体化的数字传感器。数据分小数部分和整数部分。
别再只盯着DDR5了!聊聊3D DRAM:它凭什么能解决AI算力的内存墙难题?
本文深入探讨了3D DRAM技术如何突破AI算力的内存墙限制。通过立体堆叠架构,3D DRAM在存储密度、带宽和延迟方面实现显著提升,有效解决AI训练和推理中的内存瓶颈问题。文章还分析了三星、SK海力士等巨头的技术路线图,并指出商业化面临的挑战与机遇。
LeetCode(剑指offer-tree)-面试题07. 重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 限制: 0 <= 节点个数 <= 5000...
Blazor Session设置
微软官方封装了一些浏览器的操作,其中就有Session的操作的封装ProtectedSessionStorage 微软文档因为我们知道,依赖注入的生命周期是Singleton程序Scoped网页:刷新,url直接跳转都会重置。Transient路由C# Blazor 学习笔记(10):依赖注入但是没有一个和浏览器绑定的生命周期。即浏览器关闭才会退出。这个是后端无法获取的,因为后端根本不知道浏览器何时关闭。这个只能用浏览器自带的缓存。
LeetCode 剑指 Offer 07. 重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 递归 由于前序遍历的特性,相对的第一个结点即为当前树的根节点(可能为子树) 通过构造hashmap的映射 找到中序遍历对应的结点位置 即可得出当前根节点的左子树和右子树的大小 得到当前根节点的左子树大小后 即可得出前序遍历下左子树的结点区间 通过前序遍历左子树区间和中序遍历左子树区间递归求出根节点的左子树的根节点 右子树同理 class Solution { Map<Integer,
使用GitLab的VS Code插件 GitLab Workflow 来进行项目的DevOps管理,助力研发效能
使用VS Code的GitLab Workflow插件,进行项目的DevOps管理,将效率提升到MAX。直接在VScode中管理流水线,一键跳转到创建 Issues,MR
Unity 工具 之 SoftMask软遮罩 实现 UI 边缘渐变过渡的简单使用介绍
目录Unity 工具 之 SoftMask软遮罩 实现 UI 边缘渐变过渡的简单使用介绍一、简单介绍二、Mask 实现的遮罩效果三、Soft Mask 实现遮罩效果四、 Soft Mask 的一些设置五、插件下载Unity 工具类,自己整理的一些游戏开发可能用到的模块,单独独立使用,方便游戏开发。
《leetcode》剑指 Offer 07. 重建二叉树(前序中序)《树》
剑指 Offer 07. 重建二叉树 难度中等567 输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 示例 1: Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] Output: [3,9,20,null,null,15,7] 示例 2: Input: preorder = [-1], inorder = [-1] Output: [-1] 限制: 0 <
损失函数大汇总(五十三)(Boundary Loss附公式推导与代码)
摘要 Boundary Loss是一种针对图像分割任务的新型损失函数,特别适用于高度类别不平衡的细粒度分割场景。与传统的区域型损失(如Dice、交叉熵)不同,它通过计算预测边界与真实边界之间的距离来优化模型,更关注边界精度而非区域重叠。核心思想是利用距离图(distance map)将边界约束转化为区域积分形式,实现端到端训练。具体实现中,损失函数为预测概率与距离图的点积,梯度仅取决于距离图,具有明确的空间引导性。相比区域型损失,Boundary Loss能更好处理小目标、细长结构等边界敏感任务,可与Dic
剑指offer 07. 重建二叉树
Corux原创。
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
剑指Offer_Java版(可能是你见过最精简最易懂的)
剑指offer第二版(持续更新) 题:1-6 2 实现Singleton模式 3-1 数组中重复的数字 3-2 不修改数组找出重复数字 4 二维数组查找 5 替换空格 6 从尾到头打印链表 题:7-11 7 重建二叉树 8 二叉树的下一个节点 9 用两个栈实现队 – 用两个队列实现栈 10 斐波那契数列 11 旋转数组的最小数字 ...
霍尼韦尔SoftMaster使用说明
霍尼韦尔SoftMaster使用说明
面试字节跳动时,我竟然遇到了 LeetCode 原题……
公众号关注“GitHubDaily”设为 “星标”,每天带你逛 GitHub!今天分享的题目来源于 LeetCode 上的剑指 Offer 系列面试题07. 重建二叉树,近半年在字节...
迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)
迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)
LeetCode 剑指Offer 数据结构之 树 总结 Part1
LeetCode 剑指Offer 数据结构之 树 总结 Part1 经典问题 1)遍历 2)树深度 3)重建树 4)对称树 5)子树匹配 6)二叉查找树 遍历问题 对应的题目是剑指 Offer 32 - I,剑指 Offer 32 - II,剑指 Offer 32 - III,剑指 Offer 34 DFS(一般采用递归) 深度优先的遍历 三种: 先序 根 左 右 (目前感觉用DFS先序走起比较多) def preorderTraversal(root): """ :type root: T
剑指 Offer 07. 重建二叉树
剑指 Offer 07. 重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] Output: [3,9,20,null,null,15,7] 示例 2: Input: preorder = [-1], inorder = [-1] Output: [-1] 来源:力扣(LeetCode) 链接:https
LeetCode 剑指Offer 数据结构之 递归 总结 Part1
LeetCode 剑指Offer 数据结构之 递归 总结 Part1 递归算法主要应用于树结构的搜索与遍历。其他方面也有一些经典的问题,比如斐波那契数列,跳台阶等,很多问题中动态规划都能替代递归算法。本章将对剑指Offer题库中几道递归算法考题进行总结,记录一些对于递归算法的入门理解,同时简单的与动态规划解法进行一些对比。关于动态规划的部分将在新的文章中进行总结。 递归算法核心在于函数中重复调用本函数,明确终止条件+下一次的函数调用输入(递推公式产生)即可 剑指 Offer 07: 重建二叉树 输入某二叉树
剑指offer 07 重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lco
深入doocs/leetcode:剑指Offer题解精讲
深入doocs/leetcode:剑指Offer题解精讲 【免费下载链接】leetcode ????LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解 ...
Leetcode 剑指 Offer 07. 重建二叉树
Leetcode 剑指 Offer 07. 重建二叉树 题目 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 思路 由于树的结构本身就是递归的形式, 所以重建二叉树自然也是可以用递归来解决 前序遍历就是根
力扣刷题——剑指Offer(第二版)|| JAVA语言|| Day2[重建二叉树,用两个栈实现队列]
目录 1.重建二叉树 【题目】 【思路】 【代码】 2.用两个栈实现队列 【题目】 【思路】 【代码】 1.重建二叉树 【题目】 输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] Output: [3,9,20,null,null,15,7
[JavaScript]剑指offer 07.重建二叉树
原题来源:力扣官网 先复习下前序遍历和中序遍历,对于图中的案例我们能得到: 前序:[根,左,右] => [3, 9, 20, 15, 7] 中序:[左,根,右] => [9, 3, 15, 20, 7] 最重要的点在于理清思路,前序与中序的规律 1. 前序首位就是树根节点,而这个根结点在中序中,会出现在任何位置,在这里不难发现,根结点【3】在中序遍历结果中有着不同寻常的意义:根结点【3】的左边,是左子树,根结点的右边是右子树。 2. 返回到前序遍历中去,我们也可以把根和两个子
[leetcode刷题]剑指offer汇总
刷题总结,C++实现
面试字节跳动时,我竟然遇到了原题……
点击上方“五分钟学算法”,选择“星标”公众号重磅干货,第一时间送达今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题07. 重建二叉树,近半年在字节跳动算法面试环...
201



被折叠的 条评论
为什么被折叠?



