剑指 Offer 07. 重建二叉树

阿里云Ubuntu部署Steam饥荒联机版服务器:从零到多人联机的完整指南 本文详细介绍了在阿里云Ubuntu系统上部署Steam饥荒联机版服务器的完整流程,包括环境准备、SteamCMD安装、服务端配置、Mod管理及后台运行技巧。通过2核4GB的ECS实例配置和端口设置,实现5人流畅联机体验,适合游戏爱好者快速搭建专属服务器。 阅读详情
/**
 *	剑指 Offer 07. 重建二叉树
 * @author wsq
 * @date 2020/09/11
	 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。

	例如,给出
	前序遍历 preorder = [3,9,20,15,7]
	中序遍历 inorder = [9,3,15,20,7]
	返回如下的二叉树:
	    3
	   / \
	  9  20
	    /  \
	   15   7
	
	链接:https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof
 */
package notsubmit;

public class RebuildTree {
	/**
	 *	采用递归的方式实现,由于每次递归都需要对原有的数组按照要求复制一部分,浪费了很多的时间和空间
	 * @param preorder
	 * @param inorder
	 * @return
	 */
	public TreeNode buildTree(int[] preorder, int[] inorder) {
		int val = preorder[0];
		int leftNum = getIndex(inorder, val);
		int rightNum = preorder.length - leftNum - 1;
		
		TreeNode node = new TreeNode(val);
	
		if(leftNum != 0) {
			// 需要优化,改为数组索引的形式
			int[] leftPreorder = new int[leftNum];
			System.arraycopy(preorder, 1, leftPreorder, 0, leftNum);
			int[] leftInorder = new int[leftNum];
			System.arraycopy(inorder, 0, leftInorder, 0, leftNum);
			node.left = buildTree(leftPreorder, leftInorder);
		}
		if(rightNum != 0) {			
			int[] rightPreorder = new int[rightNum];
			System.arraycopy(preorder, leftNum + 1, rightPreorder, 0, rightNum);
			int[] rightInorder = new int[rightNum];
			System.arraycopy(inorder, leftNum + 1, rightInorder, 0, rightNum);
			node.right = buildTree(rightPreorder, rightInorder);
		}
		
		return node;
    }
	
	public int getIndex(int[] arr, int val) {
		int ans = 0;
		for(int i = 0; i < arr.length; ++i) {
			if(arr[i] == val) {
				ans = i;
				break;
			}
		}
		return ans;
	}
	
	public static void main(String[] args) {
		int[] preorder = {3,9,20,15,7};
		int[] inorder = {9,3,15,20,7};
		RebuildTree rt = new RebuildTree();
		TreeNode ndoe = rt.buildTree(preorder, inorder);
	}
}

【PostgreSQL教程】PostgreSQL 高级篇之子查询 子查询也可称为内部查询、嵌套查询,指的是在 PostgreSQL 查询中的 WHERE 子句中嵌入查询语句。一个 SELECT 语句的查询结果能够作为另一个语句的输入值。子查询可以与 SELECT、INSERT、UPDATE 和 DELETE 语句一起使用,并可使用运算符如 =、、>=、 阅读详情

相关推荐

告别手动点鼠标:用Python脚本批量跑ADS版图仿真,效率提升10倍(附完整代码)

本文详细介绍了如何利用Python脚本自动化ADS版图仿真流程,显著提升射频工程师的工作效率。通过调用ADS底层接口,实现参数化修改、批量任务调度和结果自动收集,解决了手动操作中的常见问题,如仿真不更新等。附完整代码,帮助开发者快速实现10倍效率提升。

weixin_42523543的博客 332

【剑指offer07】【C++】重建二叉树

【剑指offer07】【C++】重建二叉树题目题解 题目 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 限制: 0 <= 节点个数 <= 5000 题解 笔记: 递归思想,最

程序员阿浪 308

如何用谷歌插件Apollo.io高效开发客户?手把手教你避开常见坑点

本文详细介绍了如何利用谷歌插件Apollo.io高效开发外贸客户,包括核心功能解析、免费额度最大化利用策略、多插件协同技巧以及常见陷阱规避方法。通过Apollo.io的智能匹配算法和庞大数据库,外贸从业者可以精准锁定目标客户,提升开发效率。

banana的博客 888

剑指 Offer 07. 重建二叉树 javaScript解决

剑指 Offer 07. 重建二叉树问题描述代码注意事项 问题描述 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / 9 20 / 15 7 代码 var buildTree = function(preorder, inorder) { if( !preorder.len

ryyzxf的博客 251

暗月项目七详解

本文围绕“暗月靶场项目七”展开,记录了一次从外网 Web 入口逐步深入内网并最终获取域控目标的完整实训过程。

Re_K123的博客 419

5种主流触觉传感器对比:GelSight、DIGIT、Taxim、GelSlim和TACTO怎么选?

本文深度对比了GelSight、DIGIT、Taxim、GelSlim和TACTO五种主流触觉传感器的技术原理与应用场景。针对机器人及VR项目的选型需求,文章从光学与电子传感的技术分野出发,分析了各传感器在分辨率、响应速度、集成难度和成本上的核心差异,并提供了从需求出发的实战选型决策框架,帮助开发者找到最适合的触觉解决方案。

weixin_29268637的博客 699

剑指Offer07.重建二叉树 c++

剑指Offer07.重建二叉树 写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点 1.递归和hashmap 1 递归和hashmap class Solution { private: unordered_map<int, int> index; public: TreeNode* myBuildTree(const vector<int>& preorder, const vector<int>&

y152543654的博客 242

AXI Timer IP核使用说明

AXI Timer是提供定时技术功能的集成IP核,具有时间生成、事件捕获、产生PWM波以及产生中断的功能,下面具体讲述Timer IP核的使用说明。

weixin_43418104的博客 2489

LeetCode 之 剑指 Offer 07. 重建二叉树(Java)

LeetCode 之 剑指 Offer 07. 重建二叉树(Java),输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。本文简单描述解题思路,如何重新划分前序遍历和中序遍历的二叉树根节点、左右子树,并提供实现代码。

渣渣的夏天 618

C语言入门系列:指针入门(超详细)

指针与内存是息息相关的,在学习指针之前,先回忆下内存相关的知识。内存是程序运行期间存储数据的硬件设备,为了方便管理,计算机将内存划分为一个个小的单元,每个单元的大小是一个字节。如果把内存比作一栋酒店大楼,内存单元就像是一个个小的房间,数据就住在小房间里。我们知道,为了客人能准确找到属于自己的房间,酒店房间是有房号的。同样,内存单元也是有编号的,这个编号在计算机中称之为“内存地址。

epitomizelu的专栏 3697

uniapp - 热更新提示:WGT安装包中manifest.json文件不存在 | unexpected EOF!报错详细解决,完美搞定WGT安装包中WWW目录下manifest.json不存在问题

uniapp,安卓android,苹果ios,热更新,热更新code:-1202报错,,WGT热更新报错,uniapp热更新wgt出现报错manifest.json文件不存,uniapp安卓苹果软件热更新时出现错误unexpected EOF!如何解决,怎么解决热更新wgt报错,app新版本下载安装报错WGT安装包中manifest.json文件不存在,WGT安装包中WWW目录下manifest.json不存在,uniapp热更新报错安装失败[-1201]:WGT/WGTU文件格式错误,uniapp-wgt

✅ 精选推荐文章 1万+

剑指 Offer 07. 重建二叉树(递归)

剑指 Offer 07. 重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / 9 20 / 15 7 题解:用递归找中序的位置。 /** * Definition for a binary tree node. * struct TreeNode { *

城南的花 278

CentOS7安装OpenSSL1.1.1s

CentOS7安装OpenSSL1.1.1s

Bertram的博客 734

【leetcode】【medium】剑指 Offer 07. 重建二叉树​​​​​​​

剑指 Offer 07. 重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder =[3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 限制: 0 <= 节点个数 <= 5000 注意:本题与主站 105 题重复:https://le.

lemonade13的博客 175

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

剑指offer 07. 重建二叉树

剑指offer 07. 重建二叉树 题目描述 解题思路 细节: 在中序遍历中对根节点进行定位时,一种简单的方法是直接扫描整个中序遍历的结果并找出根节点,但这样做的时间复杂度较高。我们可以考虑使用哈希表来帮助我们快速地定位根节点。 对于哈希映射中的每个键值对,键表示一个元素(节点的值),值表示其在中序遍历中的出现位置。在构造二叉树的过程之前,我们可以对中序遍历的列表进行一遍扫描,就可以构造出这个哈希映射。在此后构造二叉树的过程中,我们就只需要 O(1)的时间对根节点进行定位了。 /** * Definit

Charison的编程妙妙屋 132

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

算法练习- LeetCode 剑指 Offer 07. 重建二叉树

算法练习- LeetCode 剑指 Offer 07. 重建二叉树

qq_41758969的博客 224

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

剑指 Offer 07. 重建二叉树(中等)

剑指 Offer 07. 重建二叉树 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder =[3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 限制: 0 <= 节点个数 <= 5000 我的Java代码: 思路:给的函数接口直接...

VictorKa的博客 177

剑指 Offer 07.重建二叉树

剑指 Offer 07.重建二叉树 知识点: 前序遍历列表:第一个元素永远是 【根节点 (root)】 中序遍历列表:根节点 (root)【左边】的所有元素都在根节点的【左分支】,【右边】的所有元素都在根节点的【右分支】 算法思路: 通过【前序遍历列表】确定【根节点 (root)】 将【中序遍历列表】的节点分割成【左分支节点】和【右分支节点】 递归寻找【左分支节点】中的【根节点 (left child)】和 【右分支节点】中的【根节点 (right child)】 class Solution {

fine123455的博客 142

【剑指Offer】个人学习笔记_ 07_重建二叉树

【剑指Offer】个人学习笔记_ 07_重建二叉树 目录【剑指Offer】个人学习笔记_ [07_重建二叉树](https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof/)题目:[剑指 Offer 07. 重建二叉树](https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof/)初始解答:学习他人:方法一:方法二:方法三:总结 刷题日期:20:4827 星期一2021年3月15日 个

苏柒的博客 316

剑指offer07.重建二叉树

剑指offer07.重建二叉树 一、题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 限制: 0 <= 节点个数 <= 5000 二、题目分析 前序遍历特点:节点按照[根节点 | 左子树

AnswerCoder的博客 203

剑指 Offer 07. 重建二叉树+递归+图解+易于理解

剑指 Offer 07. 重建二叉树 题干:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 分析: class Solution { public: // 3、递归 TreeNode *helper(vector<int>& preorder, int pre_start,

baymax的博客 279
上一篇: 剑指 Offer 34. 二叉树中和为某一值的路径
下一篇: 算法要点总结
Lazy mode
博客等级 码龄10年 13粉丝 311原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值