pat根据中序遍历和先序遍历_[leetcode/lintcode 题解] 前序遍历和中序遍历树构造二叉树...

975c12e93188401a66fce15d9d9435f0.png

【题目描述】

根据前序遍历和中序遍历树构造二叉树.

在线评测地址:

九章算法 - 帮助更多中国人找到好工作,硅谷顶尖IT企业工程师实时在线授课为你传授面试技巧​www.jiuzhang.com

【样例】

样例 1:

输入:[],[]
输出:{}
解释:
二叉树为空

样例 2:

输入:[2,1,3],[1,2,3]
输出:{2,1,3}
解释:
二叉树如下2/ 
1   3

【题解】

Given preorder and inorder traversal of a tree, construct the binary tree.

Note:

You may assume that duplicates do not exist in the tree.

前序的第一个为根,在中序中找到根的位置。

中序中根的左右两边即为左右子树的中序遍历。同时可知左子树的大小size-left。

前序中根接下来的size-left个是左子树的前序遍历。

由此可以递归处理左右子树。

public class Solution {private int findPosition(int[] arr, int start, int end, int key) {int i;for (i = start; i <= end; i++) {if (arr[i] == key) {return i;}}return -1;}private TreeNode myBuildTree(int[] inorder, int instart, int inend,int[] preorder, int prestart, int preend) {if (instart > inend) {return null;}TreeNode root = new TreeNode(preorder[prestart]);int position = findPosition(inorder, instart, inend, preorder[prestart]);root.left = myBuildTree(inorder, instart, position - 1,preorder, prestart + 1, prestart + position - instart);root.right = myBuildTree(inorder, position + 1, inend,preorder, position - inend + preend + 1, preend);return root;}public TreeNode buildTree(int[] preorder, int[] inorder) {if (inorder.length != preorder.length) {return null;}return myBuildTree(inorder, 0, inorder.length - 1, preorder, 0, preorder.length - 1);}
}

【更多语言代码参考】

LintCode 领扣​www.lintcode.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中审核订单流程图_「数据架构」数据流程图:实例-订餐系统

数据流图(DFD)提供了系统内信息流(即数据流)的可视化表示。通过绘制数据流程图&#xff0c;您可以了解由参与系统流程的人员提供并交付给他们的信息、完成流程所需的信息以及需要存储和访问的信息。本文以一个订餐系统为例&#xff0c;对数据流图(DFD)进行了描述和说明。食品订…

jsp项目放入宝塔windows环境_商业裂变,之项目技术实战(第八节:宝塔面板介绍)...

一、宝塔简介&#xff1a;宝塔面板是一款服务器管理软件&#xff0c;支持windows和linux系统&#xff0c;可以通过Web端轻松管理服务器&#xff0c;提升运维效率。例如&#xff1a;创建管理网站、FTP、数据库&#xff0c;拥有可视化文件管理器&#xff0c;可视化软件管理器&…

es文件浏览器smb服务器,ES文件浏览器怎么连接电脑SMB,可以参考这篇文章

ES文件浏览器是一款多功能的手机文件/程序/进程管理器&#xff0c;可以在手机、电脑、远程和蓝牙间浏览管理文件。是一个功能强大的免费的本地和网络文件管理器和应用程序管理器。ES文件浏览器与电脑进行局域网链接后可以管理电脑的文件&#xff0c;不只是复制&#xff0c;还可…

arm ida 伪代码 安卓 符号表_使用IDA动态调试及ARM指令学习笔记

本文介绍如何用IDA进行动态调试及部分ARM指令的学习。环境&#xff1a;已root的安卓手机一部&#xff0c;IDA pro 6.8&#xff0c;win7系统。下载样本app&#xff0c;并已确认可调试(debuggable true)&#xff0c;下文不表&#xff1a;http://pan.baidu.com/s/1jG22HMY一 手机…

糖豆人显示此服务器正在进行游戏,糖豆人服务器频繁崩溃,west滚石教技巧,蓝哥踢球做内鬼...

原标题&#xff1a;糖豆人服务器频繁崩溃&#xff0c;west滚石教技巧&#xff0c;蓝哥踢球做内鬼自从糖豆人游戏开放以来&#xff0c;大批玩家涌入&#xff0c;造成糖豆人服务器拥堵&#xff0c;一度出现崩溃。隔三差五就会来一次。玩家正玩得兴起&#xff0c;突然的崩溃让玩家…

js中立即执行函数会预编译吗_面试官:聊聊对Vue.js框架的理解

作者&#xff1a;yacan8https://github.com/yacan8/blog/issues/26本文为一次前端技术分享的演讲稿&#xff0c;所以尽力不贴 Vue.js 的源码&#xff0c;因为贴代码在实际分享中&#xff0c;比较枯燥&#xff0c;效果不佳&#xff0c;而更多的是以图片和文字的形式进行表达。分…

如何卸载服务器的系统,卸载服务器的操作系统

卸载服务器的操作系统 内容精选换一换弹性云服务器卸载磁盘。弹性云服务器状态为stopped时支持系统盘(也就是/dev/sda挂载点)和用户盘的卸载&#xff0c;没有操作系统限制&#xff0c;也不需要在弹性云服务器内部安装vmtools。弹性云服务器状态为active态时有如下约束限制&…

修改了模板文件tpl如何立即生效_Views视图与模板

一、概述用户请求到视图流程&#xff1a;当有人访问我们django项目的时候 例如127.0.0.1:8000/polls/23&#xff0c;django首先到加载mysite.urls模块在mysite.urls中发现有urlpatterns变量&#xff0c;于是在其内按顺序进行匹配。当它匹配上了polls&#xff0c;就到匹配到的po…

vue本地没事放到服务器上无限循环,解决vue中的无限循环问题

项目中遇到了这样一个问题&#xff1a;每一种产品有对应的服务费&#xff0c;每一个商家有多种商品要单独计算每一家的服务费&#xff0c;最后汇总总的服务费用。我直接写了一个方法来计算出每个商家和总的服务费用并return出来。如果不看控制台的话运行是没问题的。但是控制台…

壁式框架内力计算_4种类型剪力墙的计算要点

剪力墙又称抗风墙、抗震墙或结构墙。房屋或构筑物中主要承受风荷载或地震作用引起的水平荷载和竖向荷载(重力)的墙体&#xff0c;防止结构剪切(受剪)破坏。又称抗震墙&#xff0c;一般用钢筋混凝土做成。它分平面剪力墙和筒体剪力墙。平面剪力墙用于钢筋混凝土框架结构、升板结…

片源系统服务器,OUO NAS10主控界面评测

OUO NAS10主控界面评测■OUO NAS10主控界面评测OUO NAS10采用了高集成度的芯片&#xff0c;功耗比较低&#xff0c;整机满载情况下也不会超过9W。不过他的主控界面看起来还是比较简单易懂的&#xff0c;由于本身自带了linux的操作系统&#xff0c;还是比较容易上手的。附送光盘…

解锁设备_无师自通解锁新设备抗击疫情

随着春节假期接近尾声&#xff0c;一线企业复工复产&#xff0c;春运迎来全面返程客流高峰&#xff0c;为应对返程客流&#xff0c;做好疫情防控工作&#xff0c;哈车管内各站全面组织积极应对&#xff0c;做好进出站旅客测温&#xff0c;加强对进出站旅客体温筛查&#xff0c;…

主从式网络的优点_贸泽电子原创开发板大赛【创意奖作品】物联网开发板做成主从机形式,是创意还是多此一举?...

没有创意&#xff0c;竞赛还有什么意义&#xff1f;作为汇集了国内工程师中的一批顶尖高手的设计大赛&#xff0c;本届贸泽电子原创开发板大赛自然少不了“最佳创意奖”&#xff0c;今天&#xff0c;就让我们来看看工程师大开脑洞的获奖作品有何稀奇&#xff1f;奖创意奖《基于…

docker mysql配置 丢失_Ubuntu16.04服务器环境配置 – Docker、MySQL、Redis

Ubuntu16.04 服务器环境配置 – Docker、MySQL、Redis安装Docker1. 卸载旧版本sudo apt-get remove docker docker-engine docker.io2. 安装 https 相关的软件包sudo apt-get update # 先更新一下软件源库信息sudo apt-get install apt-transport-https ca-certificates cur…

mysql主从配置_MySQL主从配置详解

主服务器数据库的每次操作都会记录在其二进制文件mysql-bin.xxx(该文件可以在mysql目录下的data目录中看到)中&#xff0c;从服务器的I/O线程使用专用账号登录到主服务器中读取该二进制文件&#xff0c;并将文件内容写入到自己本地的中继日志relay-log文件中&#xff0c;然后从…

mysql 复制方式_MySQL复制方法

MySQL的二进制日志&#xff0c;MySQL复制原理&#xff0c;MySQL主从模式搭建&#xff0c;MySQL双主模式搭建&#xff0c;MySQL级联模式搭建&#xff0c;MySQL半同步模式复制一、二进制日志1、概念MySQL的二进制日志(binary log)是一个二进制文件&#xff0c;主要用于记录修改数…

mysql内部时区_一文解决MySQL时区相关问题

前言&#xff1a;在使用MySQL的过程中&#xff0c;你可能会遇到时区相关问题&#xff0c;比如说时间显示错误、时区不是东八区、程序取得的时间和数据库存储的时间不一致等等问题。其实&#xff0c;这些问题都与数据库时区设置有关&#xff0c;本篇文章将从数据库参数入手&…

制作 mysql的rpm文件_自制mysql.rpm安装包

RPM安装比源码更快更方便&#xff0c;更利于统一版本&#xff0c;省去了繁琐的编译过程&#xff0c;下面以制作mysql的rpm安装包为例。编译环境1、 安装rpm-build&#xff1b;检查是否配置rpm环境1 # sudo yum list | greprpm2 This system is not registered with RHN.3 RHN s…

mysql multi主从复制_mysqld_multi方式配置Mysql数据库主从复制

mysqld_multi设计用于管理在同一台机器上运行的多个mysqld进程&#xff0c;这些进程使用不同的socket文件并监听在不同的端口上。mysqld_multi可以批量启动、关闭、或者报告这些mysqld进程的状态。在这里我们通过这种方式来在同一个机器上启动多个数据库实例&#xff0c;并配置…

mysql中if在oracle怎么用_mysql和oracle的mybatis操作

1.Oracle、MySQL插入时返回下一个主键的操作Xml代码 Oracle&#xff1a;SELECT SEQ_ROLE.NEXTVAL AS ID FROM DUALinsert into ROLE(ID, NAME, CREATE, MODIFY) values (#{id}, #{name}, sysdate, sysdate)注意&#xff1a;这边的keyProperty"id"中"id"指的…