剑指Offer P62 面试题7:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。

public class Solution
{public TreeNode reConstructBinaryTree(int [] pre,int [] in) {if (pre == null || in == null || pre.length == 0 || in.length == 0)return null;TreeNode root = new TreeNode(pre[0]);for (int location = 0; location < in.length; location++){if (pre[0] == in[location]){// 左子树int[] leftPre = new int[location];int[] leftIn = new int[location];for (int i = 0; i < location; i++){leftPre[i] = pre[i + 1];leftIn[i] = in[i];}root.left = reConstructBinaryTree(leftPre, leftIn);                    // 右子树int[] rightPre = new int[in.length - 1 - location];int[] rightIn = new int[in.length - 1 - location];for (int i = 0; i < in.length - 1 - location; i++){rightPre[i] = pre[location + 1 + i];rightIn[i] = in[location + 1 + i];}root.right = reConstructBinaryTree(rightPre, rightIn);                    }}return root;}
}

递归调用的时候一定要写

root.left  = 
root.right = 

如果允许导入相关包的话,就不用建立新数组了

root.left = reConstructBinaryTree(Arrays.copyOfRange(pre, 1, location+1), Arrays.copyOfRange(in, 0, location));
root.right = reConstructBinaryTree(Arrays.copyOfRange(pre, location+1, pre.length), Arrays.copyOfRange(in, location+1, in.length));

2018.7.8学习笔记相关推荐

  1. 2018/8/05--OpenGL学习笔记(七)Light Caster/Multiple Light

    开篇的话:接着赶笔记,这篇写完正好回学校开始学习新的内容了. 投光物 将光投射(Cast)到物体的光源叫做投光物(Light Caster). 平行光(Directional Light) (我们通常 ...

  2. 【2018.05.04学习笔记】【linux基础知识10.1-10.5】

    2019独角兽企业重金招聘Python工程师标准>>> 10.1 使用w查看系统负载 w命令:查看cpu负载情况 [root@lgs-01 ~]# w11:20:20 up 1 mi ...

  3. 【2018.05.07学习笔记】【linux基础知识10.6-10.10】

    2019独角兽企业重金招聘Python工程师标准>>> 10.6 监控io性能 iostat命令:监控磁盘详细io信息.安装sysstat包得到. 当你用vmstat命令查看,b列或 ...

  4. linux高级的脚本,【2018.07.23学习笔记】【linux高级知识 Shell脚本编程练习】

    1.编写shell脚本,计算1-100的和: #!/bin/bash sum=0 for i in `seq 1 100` do sum=$[$sum+$i] done echo $sum 2.编写s ...

  5. 【2018.06.21学习笔记】【linux高级知识 14.1-14.3】

    2019独角兽企业重金招聘Python工程师标准>>> 14.1 NFS介绍 NFS服务全称是NetWork File System:网络文件系统,最早有sun公司开发的,4.0版本 ...

  6. 【2018.04.24学习笔记】【linux基础知识8.10-8.13】

    2019独角兽企业重金招聘Python工程师标准>>> 8.10 shell特殊符号cut命令 shell中的特殊符号: 1.* 代表任意n个字符,包括0个 2.? 代表任意单个字符 ...

  7. 2018.1.5学习笔记

    今天早上来的时候老师就给我们扔了一个线段树分治的课件告诉我们自己研究,,,然后发现网上资料少得可怜完全不知道所谓的线段树分治是什么,,,研究了一天结果并没有什么结果,,,例题也完全看不懂最后搞了一天, ...

  8. 2018.7.18学习笔记

    burp实现弱密码破解 1.先打开你的burpsuit,浏览器设置为代理服务器(代理:127.0.0.1,端口:8080) 2.在网上随意找到一个网站,随意输入账号和密码,点击登录 3.burp抓包成 ...

  9. 识别和追踪主题层次的影响力者(来自2018 Machine Learning 论文学习笔记)

    本文作者:合肥工业大学 管理学院 钱洋 email:1563178220@qq.com . 以下内容是个人的论文阅读笔记,内容可能有不到之处,欢迎交流. 未经本人允许禁止转载. 文章目录 论文来源 论 ...

最新文章

  1. 生成式AI,引领AI从“换脸”到“造脸”
  2. Xilinx Altera FPGA中的逻辑资源(Slices VS LE)比较
  3. 不需要任何依赖的图片加载错误处理的工具类load-image.js
  4. Nominal data 与Ordinal data区别
  5. CodeForces - 165E Compatible Numbers(SOSdp)
  6. 任意阶魔方阵matlab程序,【精品】任意阶魔方阵算法(c语言)
  7. 用户登录和注册的功能
  8. n维数组实现(可变参数表的使用)
  9. Qt工作笔记-QByteArray与自定义结构体之间的转化(可用于网络传输,以及数据回调)
  10. 【BIOS来电重启】Restore AC Power Loss
  11. 女神节福利来了!(自动驾驶/三维重建/SLAM/点云/标定/深度估计/3D检测)
  12. python爬虫天气预报难不难_Python爬虫天气预报实例详解(小白入门)
  13. Atitit 字符串模板与 字符串插值 目录 1.1. 字符串插值是将字符串中的占位符替换为局域变量的过程 1 1.2. 模板字面量 是允许嵌入表达式的字符串字面量 1 1.3. 格式化字符串[编辑
  14. Flutter 本地小说阅读器
  15. BP(BackPropagation)神经网络算法详解
  16. B站视频、音频分开传输
  17. 吴军《态度》读书笔记
  18. lighttpd跟php,Lighttpd与PHP
  19. 微信也能鉴别山寨iPhone【微信高级教程2】
  20. 语法和语义之间的差异_语法和语义之间的区别

热门文章

  1. nubia基于android深度定制的ui,系统硬件篇:走心的Nubia UI
  2. OpenStack私有云部署
  3. mysql 的独占锁和排它锁_数据库中的共享锁与排他锁
  4. 【VUE】一个简单常用的proxyTable配置
  5. 阿里含光 VS 华为昇腾:AI芯片路在何方
  6. 基于JAVA小动物领养网站计算机毕业设计源码+数据库+lw文档+系统+部署
  7. Android获取通话记录的未接来电、自定义通知栏事件处理
  8. 阿里云人脸识别接口调用卡顿,超时
  9. Linux基础命令 删除文件或目录
  10. 小黑下午第一场面试被鸽,一切遇见随缘,继续第二场的leetcode之旅:654. 最大二叉树